জাভাতে ত্রুটি কোড / স্ট্রিং সংজ্ঞায়নের সেরা উপায়?


118

আমি জাভাতে একটি ওয়েব পরিষেবা লিখছি এবং আমি ত্রুটি কোডগুলি এবং তাদের সম্পর্কিত ত্রুটিযুক্ত স্ট্রিংগুলি সংজ্ঞায়নের সেরা উপায়টি বের করার চেষ্টা করছি । আমার একটি সংখ্যাসূচক ত্রুটি কোড এবং একটি ত্রুটি স্ট্রিং একসাথে গোষ্ঠীভুক্ত হওয়া দরকার। ত্রুটি কোড এবং ত্রুটিযুক্ত স্ট্রিং উভয়ই ক্লায়েন্টকে ওয়েব পরিষেবা অ্যাক্সেস করতে প্রেরণ করা হবে। উদাহরণস্বরূপ, যখন কোনও এসকিউএলএক্সসেপশন হয় তখন আমি নিম্নলিখিতগুলি করতে চাই:

// Example: errorCode = 1, 
//          errorString = "There was a problem accessing the database."
throw new SomeWebServiceException(errorCode, errorString);

ক্লায়েন্ট প্রোগ্রামটি বার্তাটি প্রদর্শিত হতে পারে:

"# 1 ত্রুটি ঘটেছে: ডাটাবেস অ্যাক্সেস করতে সমস্যা হয়েছিল।"

আমার প্রথম চিন্তাটি ছিল Enumত্রুটি কোডগুলির একটি ব্যবহার করা এবং toStringত্রুটির স্ট্রিংগুলি ফিরিয়ে আনার পদ্ধতিগুলিকে ওভাররাইড করা । আমি এখানে যা এলাম:

public enum Errors {
  DATABASE {
    @Override
    public String toString() {
      return "A database error has occured.";
    }
  },

  DUPLICATE_USER {
    @Override
    public String toString() {
      return "This user already exists.";
    }
  },

  // more errors follow
}

আমার প্রশ্ন: এটি করার আরও ভাল উপায় আছে কি? আমি কোনও বাহ্যিক ফাইল থেকে পড়ার চেয়ে কোডে সমাধানটি পছন্দ করব। আমি এই প্রকল্পের জন্য জাভাদোক ব্যবহার করছি, এবং ত্রুটি কোডগুলি লাইনটিতে ডকুমেন্ট করতে সক্ষম হয়েছি এবং ডকুমেন্টেশনে সেগুলি স্বয়ংক্রিয়ভাবে আপডেট করা সহায়ক হবে।


দেরিতে মন্তব্য করা কিন্তু উল্লেখ করার মতো বিষয় আমার কাছে ... 1) ব্যতিক্রম ছাড়া এখানে আপনার কী সত্যই ত্রুটি কোডের প্রয়োজন? নীচে blabla999 উত্তর দেখুন। 2) আপনার ব্যবহারকারীর কাছে খুব বেশি ত্রুটি সম্পর্কিত তথ্য দেওয়ার ক্ষেত্রে সাবধান হওয়া উচিত। সার্ভার লগগুলিতে দরকারী ত্রুটি সম্পর্কিত তথ্য লেখা উচিত তবে ক্লায়েন্টকে ন্যূনতম জানাতে হবে (উদাহরণস্বরূপ "লগ ইন করতে সমস্যা হয়েছে")। এটি সুরক্ষার প্রশ্ন এবং স্পোফারদের পা রাখার প্রতিরোধ।
wmorrison365

উত্তর:


161

তবে অবশ্যই এনাম সলিউশনটির একটি আরও ভাল বাস্তবায়ন রয়েছে (যা সাধারণত বেশ সুন্দর):

public enum Error {
  DATABASE(0, "A database error has occured."),
  DUPLICATE_USER(1, "This user already exists.");

  private final int code;
  private final String description;

  private Error(int code, String description) {
    this.code = code;
    this.description = description;
  }

  public String getDescription() {
     return description;
  }

  public int getCode() {
     return code;
  }

  @Override
  public String toString() {
    return code + ": " + description;
  }
}

পরিবর্তে বর্ণনটি ফিরিয়ে দিতে আপনি স্ট্রিং () এ ওভাররাইড করতে চাইতে পারেন - নিশ্চিত নয় not যাইহোক, মূল কথাটি হ'ল প্রতিটি ত্রুটি কোডের জন্য আপনাকে আলাদাভাবে ওভাররাইড করার দরকার নেই। এছাড়াও নোট করুন যে আমি স্পষ্টরূপে অর্ডিনাল মান ব্যবহারের পরিবর্তে কোডটি নির্দিষ্ট করেছি - এটি ক্রমটি পরিবর্তন করতে এবং ত্রুটিগুলি যুক্ত / যুক্ত করতে পরে আরও সহজ করে তোলে।

ভুলে যাবেন না যে এটি মোটেও আন্তর্জাতিকীকৃত নয় - তবে যতক্ষণ না আপনার ওয়েব পরিষেবা ক্লায়েন্ট আপনাকে লোকাল বিবরণ না পাঠায় আপনি সহজেই এটিকে নিজেরাই আন্তর্জাতিককরণ করতে পারবেন না। কমপক্ষে তাদের কাছে ক্লায়েন্টের পাশে i18n ব্যবহার করার জন্য ত্রুটি কোড থাকবে ...


13
আন্তর্জাতিকীকরণের জন্য, বিবরণ ক্ষেত্রটি এমন একটি স্ট্রিং কোডের সাথে প্রতিস্থাপন করুন যা কোনও সংস্থান বান্ডেলে সন্ধান করা যেতে পারে?
মার্কাস ডাউনিং 13

@ মার্কাস: আমি এই ধারণাটি পছন্দ করি। আমি এই জিনিসটি দরজা থেকে সরিয়ে দেওয়ার দিকে মনোনিবেশ করছি, তবে আমরা যখন আন্তর্জাতিকীকরণের দিকে তাকাই, তখন আমি মনে করি আপনি যা বলেছিলেন আমি তা করব। ধন্যবাদ!
উইলিয়াম ব্রেন্ডেল 13

@ মার্কাস, যদি টুস্ট্রিং () ওভাররাইডেন না হয় (যা এটি হওয়ার দরকার নেই), তবে স্ট্রিং কোডটি কেবল স্ট্রিং () এর এনাম মান হতে পারে যা DATABASE, বা এই ক্ষেত্রে DUPLICATE_USER হবে।
রুবল

@ জোন স্কিকেট! আমি এই সমাধানটি পছন্দ করি, কীভাবে একটি সমাধান তৈরি করতে পারে যা স্থানীয়করণে সহজ (বা অন্যান্য ভাষায় অনুবাদ করা যায় ইত্যাদি) অ্যান্ড্রয়েডে এটি ব্যবহারের কথা চিন্তা করে আমি কি সেখানে হার্ড কোডিং স্ট্রিংয়ের পরিবর্তে আর স্ট্রিং.আইডিএস_এক্সএক্সএক্সএক্স ব্যবহার করতে পারি?
এবি

1
@ এএবি: ভাল করে একবার আপনি এনামটি পেয়ে গেলে আপনি সহজেই এনাম ভ্যালু থেকে প্রপার্টি ফাইল বা যে কোনও কিছুতে প্রাসঙ্গিক স্থানীয় উত্স আহরণের জন্য একটি ক্লাস লিখতে পারেন।
জন স্কিটি

34

যতদূর আমি উদ্বিগ্ন, আমি কোনও সম্পত্তি ফাইলগুলিতে ত্রুটি বার্তাগুলিকে বহিরাগত করতে পছন্দ করি। আপনার অ্যাপ্লিকেশনটির আন্তর্জাতিকীকরণের ক্ষেত্রে এটি সত্যই সহায়ক হবে (প্রতিটি ভাষাতে একটি বৈশিষ্ট্য ফাইল)। ত্রুটি বার্তাটি সংশোধন করাও সহজ এবং জাভা উত্সগুলির পুনরায় সংকলনের প্রয়োজন হবে না।

আমার প্রকল্পগুলিতে, সাধারণত আমার একটি ইন্টারফেস থাকে যাতে ত্রুটি কোডগুলি থাকে (স্ট্রিং বা পূর্ণসংখ্যা, এটি খুব বেশি যত্ন করে না), এতে এই ত্রুটির জন্য বৈশিষ্ট্যগুলির ফাইলগুলির কী রয়েছে:

public interface ErrorCodes {
    String DATABASE_ERROR = "DATABASE_ERROR";
    String DUPLICATE_USER = "DUPLICATE_USER";
    ...
}

বৈশিষ্ট্য ফাইলটিতে:

DATABASE_ERROR=An error occurred in the database.
DUPLICATE_USER=The user already exists.
...

আপনার সমাধানের সাথে আর একটি সমস্যা হ'ল মূল লক্ষ্য: আপনার কেবলমাত্র 2 টি ত্রুটি, এবং ইতিমধ্যে 12 টি লাইন কোড। সুতরাং আপনার এনুমুরেশন ফাইলটি কল্পনা করুন যখন আপনার পরিচালনা করতে কয়েকশ ত্রুটি থাকবে!


2
আমি পারলে এটি 1 এরও বেশি করতাম। স্ট্রিংগুলি হার্ডকোডিং রক্ষণাবেক্ষণের জন্য কুৎসিত।
রবিন

3
ইন্টারফেসে স্ট্রিং ধ্রুবক সংরক্ষণ করা একটি খারাপ ধারণা। আপনি এনাম ব্যবহার করতে পারেন বা প্রাইভেট কনস্ট্রাক্টর, প্রতি প্যাকেজ বা সম্পর্কিত ক্ষেত্রের সাথে ফাইনাল ক্লাসে স্ট্রিং কনস্ট্যান্ট ব্যবহার করতে পারেন। দয়া করে জন স্কিটিস এনামসের সাথে উত্তর দিন। দয়া করে চেক করুন। stackoverflow.com/questions/320588/…
আনন্দ ভার্কি ফিলিপস

21

ওভারলোডিং টু স্ট্রিং () কিছুটা আইকি বলে মনে হচ্ছে - এটি টুস্ট্রিং () এর সাধারণ ব্যবহারের প্রসারিত কিছুটা মনে হয়।

কি সম্পর্কে:

public enum Errors {
  DATABASE(1, "A database error has occured."),
  DUPLICATE_USER(5007, "This user already exists.");
  //... add more cases here ...

  private final int id;
  private final String message;

  Errors(int id, String message) {
     this.id = id;
     this.message = message;
  }

  public int getId() { return id; }
  public String getMessage() { return message; }
}

আমার কাছে অনেক ক্লিনার মনে হচ্ছে ... এবং কম ভার্জোজ।


5
যে কোনও বস্তুতে (স্ট্রিং এনামগুলি) ওভারলোডিং স্ট্রিং () বেশ স্বাভাবিক।
ক্লিটাস

+1 জন স্কিটির সমাধান হিসাবে যথেষ্ট নমনীয় নয়, তবে এটি সমস্যাটি খুব সুন্দরভাবে সমাধান করে। ধন্যবাদ!
উইলিয়াম ব্রেন্ডেল 13

2
আমি বুঝিয়েছি যে টুস্ট্রিং () সবচেয়ে সাধারণ এবং কার্যকরভাবে অবজেক্টটি সনাক্ত করার জন্য পর্যাপ্ত তথ্য দেওয়ার জন্য ব্যবহৃত হয় - এতে প্রায়শই ক্লাসের নাম অন্তর্ভুক্ত থাকে, বা কোনও উপায় অর্থবোধের ধরণটি অর্থপূর্ণভাবে বলতে পারে। একটি টুস্ট্রিং () যা কেবল 'একটি ডাটাবেসের ত্রুটি দেখা দিয়েছে' প্রত্যাবর্তন করে তা অনেক ক্ষেত্রে অবাক করে।
কাউয়ান

1
আমি কোভানের সাথে একমত, টু স্ট্রিং () এভাবে ব্যবহার করা কিছুটা 'হ্যাকিশ' বলে মনে হচ্ছে। বাক্সের জন্য কেবল একটি দ্রুত ব্যাং এবং সাধারণ ব্যবহার নয়। এনামের জন্য, টস্ট্রিং () এর এনাম ধ্রুবকের নামটি ফিরিয়ে দেওয়া উচিত। আপনি কোনও ভেরিয়েবলের মান চাইলে এটি কোনও ডিবাগারে আকর্ষণীয় দেখায়।
রবিন

19

আমার শেষ কাজটিতে আমি এনাম সংস্করণে আরও গভীরভাবে চলেছি:

public enum Messages {
    @Error
    @Text("You can''t put a {0} in a {1}")
    XYZ00001_CONTAINMENT_NOT_ALLOWED,
    ...
}

@ এরর, @ ইনফো, @ ওয়ার্নিং ক্লাস ফাইলে ধরে রাখা হয় এবং রানটাইম এ উপলব্ধ। (বার্তা প্রসবের বর্ণনা দিতেও সহায়তা করতে আমাদের কাছে আরও কয়েকটি টীকা ছিল)

@ পাঠ্য একটি সংকলন-সময় টীকা।

আমি এর জন্য একটি টীকা প্রসেসর লিখেছি যা নিম্নলিখিতগুলি করেছে:

  • কোনও নকল বার্তা নম্বর নেই তা যাচাই করুন (প্রথম আন্ডারস্কোরের আগে অংশ)
  • সিনট্যাক্স-বার্তা পাঠ্য পরীক্ষা করুন
  • এনাম মান দ্বারা প্রবিষ্ট পাঠ্য থাকা একটি বার্তা.প্রপার্টি ফাইল তৈরি করুন।

আমি কয়েকটি ইউটিলিটি রুটিন লিখেছি যা লগ ত্রুটিগুলিকে সহায়তা করেছে, ব্যতিক্রম হিসাবে তাদের আবৃত করতে (যদি ইচ্ছা হয়) এবং আরও অনেক কিছু।

আমি তাদের ওপেন-সোর্সটি এনে দেওয়ার জন্য চেষ্টা করছি ... - স্কট


ত্রুটি বার্তাগুলি পরিচালনা করার দুর্দান্ত উপায়। আপনি কি ইতিমধ্যে এটি খোলার উত্সাহিত করেছেন?
বোবল

5

আমি আপনাকে java.util.ResourceBundle এ একবার দেখে নেওয়ার পরামর্শ দিই। আই 18 এন সম্পর্কে আপনার যত্ন নেওয়া উচিত তবে এটি না করলেও এটি মূল্যবান। বার্তাগুলি বহিরাগত করা খুব ভাল ধারণা। আমি খুঁজে পেয়েছি যে ব্যবসায়ের লোকদের স্প্রেডশিট দিতে সক্ষম হওয়া তাদের পক্ষে কার্যকর ছিল যা তাদের দেখতে চেয়েছিল ঠিক সেই ভাষায় রাখতে দেয়। সংকলনের সময় .properties ফাইল তৈরি করার জন্য আমরা একটি পিপীলিকা কাজ লিখেছিলাম। এটি I18N তুচ্ছ করে তোলে।

আপনি যদি বসন্ত ব্যবহার করেন তবে আরও ভাল। তাদের বার্তা উত্স শ্রেণি এই ধরণের জিনিসগুলির জন্য দরকারী।


4

কেবলমাত্র এই নির্দিষ্ট মৃত ঘোড়াটিকে চাবুক মারার জন্য- যখন শেষ গ্রাহকদের ত্রুটিগুলি দেখানো হয় তখন আমরা সংখ্যাসূচক ত্রুটি কোডগুলি ব্যবহার করতে পারি, যেহেতু তারা প্রায়শই আসল ত্রুটির বার্তা ভুলে যায় বা ভুল করে তবে কখনও কখনও এমন একটি সংখ্যার মান ধরে রাখতে পারে যা দিতে পারে আপনি আসলে কি ঘটেছে তার একটি সূত্র।


3

এটি সমাধান করার বিভিন্ন উপায় রয়েছে। আমার পছন্দের পদ্ধতির ইন্টারফেস রয়েছে:

public interface ICode {
     /*your preferred code type here, can be int or string or whatever*/ id();
}

public interface IMessage {
    ICode code();
}

এখন আপনি বার্তাগুলি সরবরাহ করে এমন অনেকগুলি এনাম সংজ্ঞায়িত করতে পারেন:

public enum DatabaseMessage implements IMessage {
     CONNECTION_FAILURE(DatabaseCode.CONNECTION_FAILURE, ...);
}

সেগুলি স্ট্রিংগুলিতে পরিণত করার জন্য এখন আপনার কাছে বেশ কয়েকটি বিকল্প রয়েছে। আপনি আপনার কোডগুলিতে স্ট্রিংগুলি সংকলন করতে পারেন (টীকাগুলি বা এনাম কনস্ট্রাক্টর পরামিতি ব্যবহার করে) অথবা আপনি সেগুলি কোনও কনফিগার / সম্পত্তি ফাইল বা কোনও ডাটাবেস টেবিল বা মিশ্রণ থেকে পড়তে পারেন। দ্বিতীয়টি আমার পছন্দসই পদ্ধতির কারণ আপনার সর্বদা কিছু বার্তাগুলির প্রয়োজন হবে যা আপনি খুব তাড়াতাড়ি পাঠ্যে রূপান্তর করতে পারেন (যেমন আপনি যখন ডাটাবেসে সংযুক্ত হন বা কনফিগারেশনটি পড়েন)।

আমি প্রতিটি কোড কোথাও কোথাও ব্যবহার করা হয়েছে এবং কনফিগারেশন ফাইলগুলিতে সমস্ত প্রত্যাশিত বার্তা ইত্যাদি রয়েছে তা নিশ্চিত করতে আমার ইন্টারফেস প্রয়োগ করে এমন সমস্ত ধরণের সন্ধানের জন্য আমি ইউনিট পরীক্ষা এবং প্রতিচ্ছবি ফ্রেমওয়ার্কগুলি ব্যবহার করছি using

Https://github.com/javaparser/javaparser বা Eclipse- এর মতো জাভা পার্স করতে পারে এমন ফ্রেমওয়ার্কগুলি ব্যবহার করে , আপনি এনামগুলি কোথায় ব্যবহৃত হয়েছে তা পরীক্ষা করতে পারেন এবং অব্যবহৃত ব্যবহার করতে পারেন।


2

আমি (এবং আমার সংস্থার আমাদের টিমের বাকী) ত্রুটি কোডগুলি ফিরিয়ে দেওয়ার পরিবর্তে ব্যতিক্রম বাড়াতে পছন্দ করি। ত্রুটি কোডগুলি সর্বত্র যাচাই করতে হবে, চারপাশে পাস করতে হবে এবং কোডের পরিমাণ বড় হওয়ার সাথে সাথে কোডটি অপঠনযোগ্য করতে হবে।

ত্রুটি শ্রেণি তারপরে বার্তাটি সংজ্ঞায়িত করবে।

PS: এবং প্রকৃতপক্ষে আন্তর্জাতিকীকরণেরও যত্নশীল!
পিপিএস: আপনি উত্থাপন পদ্ধতিটি পুনরায় সংজ্ঞায়িত করতে এবং প্রয়োজনে লগিং, ফিল্টারিং ইত্যাদি যুক্ত করতে পারেন (কমপক্ষে পরিবেশ, যেখানে ব্যতিক্রম শ্রেণি এবং বন্ধুরা প্রসারিত / পরিবর্তনযোগ্য)


দুঃখিত, রবিন, কিন্তু তারপরে (অন্ততপক্ষে উপরের উদাহরণ থেকে) এগুলি দুটি ব্যতিক্রম হওয়া উচিত - "ডাটাবেস ত্রুটি" এবং "সদৃশ ব্যবহারকারী" এত সম্পূর্ণ পৃথক যে দুটি পৃথক ত্রুটি-সাবক্ল্যাস তৈরি করা উচিত, যা স্বতন্ত্রভাবে ক্যাচারযোগ্য ( একটি সিস্টেম হচ্ছে, অন্যটি প্রশাসকের ত্রুটিযুক্ত)
ব্লেব্লা 999

এবং যদি একটি বা অন্য ব্যতিক্রমের মধ্যে পার্থক্য না করে তবে ত্রুটি কোডগুলি কীসের জন্য ব্যবহৃত হয়? কমপক্ষে হ্যান্ডলারের উপরে, তিনি হ'ল: ত্রুটি-কোডগুলি নিয়ে কাজ করছেন যা চারপাশে পাস হয় এবং যদি-যদি স্যুইচ করা থাকে।
blabla999

আমি মনে করি ব্যতিক্রম কোডের চেয়ে ব্যতিক্রমটির নামটি অনেক বেশি চিত্রণমূলক এবং স্ব-বিবরণী হবে। ভাল ব্যতিক্রম নামগুলি আবিষ্কার করতে আরও চিন্তা করা ভাল, আইএমও।
duffymo

@ blabla999 আহ, আমার চিন্তাভাবনা ঠিক আছে। কেন মোটা দানাযুক্ত ব্যতিক্রম ধরা এবং তারপরে "যদি ত্রুটি কোড == এক্স, বা y, বা z" পরীক্ষা করা হয়। যেমন একটি ব্যথা এবং শস্য বিরুদ্ধে যায়। তারপরে, এছাড়াও, আপনি আপনার স্ট্যাকের বিভিন্ন স্তরে বিভিন্ন ব্যতিক্রম ধরতে পারবেন না। আপনাকে প্রতিটি স্তরে ধরতে হবে এবং প্রতিটিটিতে ত্রুটি কোডটি পরীক্ষা করতে হবে। এটি ক্লায়েন্ট কোডটিকে আরও বেশি ভার্বোজ বানায় ... আমি পারলে +1 + আরও বেশি। এটি বলেছিল, আমি অনুমান করি আমাদের ওপিএস প্রশ্নের উত্তর দিতে হবে।
wmorrison365

2
মনে রাখবেন, এটি একটি ওয়েব পরিষেবার জন্য। ক্লায়েন্ট কেবল স্ট্রিং পার্স করতে পারে। সার্ভারের পাশে এখনও ছোঁড়া ব্যতিক্রম থাকবে যার ত্রুটি কোড সদস্য রয়েছে, এটি ক্লায়েন্টের চূড়ান্ত প্রতিক্রিয়াতে ব্যবহার করা যেতে পারে।
pkrish

1

একটু দেরি হলেও, আমি কেবল নিজের জন্য একটি সুন্দর সমাধান খুঁজছিলাম। আপনার যদি মেসেজের বিভিন্ন ধরণের ত্রুটি থাকে তবে আপনি সাধারণ, কাস্টম বার্তা কারখানাটি যুক্ত করতে পারেন যাতে আপনি আরও বিশদ এবং ফর্ম্যাটটি পরে উল্লেখ করতে পারেন later

public enum Error {
    DATABASE(0, "A database error has occured. "), 
    DUPLICATE_USER(1, "User already exists. ");
    ....
    private String description = "";
    public Error changeDescription(String description) {
        this.description = description;
        return this;
    }
    ....
}

Error genericError = Error.DATABASE;
Error specific = Error.DUPLICATE_USER.changeDescription("(Call Admin)");

সম্পাদনা: ঠিক আছে, এখানে এনাম ব্যবহার করা কিছুটা বিপজ্জনক কারণ আপনি স্থায়ীভাবে নির্দিষ্ট এনামকে পরিবর্তন করেন। আমার ধারণা শ্রেনীতে পরিবর্তিত হয়ে স্থিতিশীল ক্ষেত্রগুলি ব্যবহার করা ভাল তবে আপনি আর '==' ব্যবহার করতে পারবেন না। সুতরাং আমি অনুমান করি এটি কী করা উচিত না তার একটি ভাল উদাহরণ, (বা এটি কেবলমাত্র আরম্ভের সময় করবেন) :)


1
আপনার সম্পাদনার সাথে পুরোপুরি একমত, রানটাইমের সময় এনাম ক্ষেত্রটি পরিবর্তন করা ভাল অনুশীলন নয়। এই নকশাটি দিয়ে সবাই ত্রুটি বার্তা সম্পাদনা করতে সক্ষম। এটি বেশ বিপজ্জনক। এনাম ক্ষেত্র সর্বদা চূড়ান্ত হওয়া উচিত।
বি

0

ত্রুটি কোড / বার্তা সংজ্ঞার জন্য এনাম এখনও একটি দুর্দান্ত সমাধান যদিও এটির আই 18 এন উদ্বেগ রয়েছে। আসলে আমাদের দুটি পরিস্থিতি থাকতে পারে: কোড / বার্তাটি শেষ ব্যবহারকারী বা সিস্টেম ইন্টিগ্রেটারের কাছে প্রদর্শিত হয়। পরবর্তী ক্ষেত্রে, I18N প্রয়োজনীয় নয়। আমি মনে করি ওয়েব পরিষেবাগুলি সম্ভবত পরবর্তী ক্ষেত্রে later


0

interfaceবার্তা ধ্রুবক হিসাবে ব্যবহার করা সাধারণত একটি খারাপ ধারণা। এটি রফতানি হওয়া API এর অংশ হিসাবে ক্লায়েন্ট প্রোগ্রামে স্থায়ীভাবে ফাঁস হবে। কে জানে, পরবর্তী ক্লায়েন্ট প্রোগ্রামাররা তাদের প্রোগ্রামের অংশ হিসাবে সেই ত্রুটি বার্তাগুলি (পাবলিক) পার্স করতে পারে।

স্ট্রিং বিন্যাসের পরিবর্তনগুলি ক্লায়েন্টের প্রোগ্রামটি ভেঙে / ফেলতে পারে বলে এটি সমর্থন করার জন্য আপনি চিরতরে লক হয়ে যাবেন।


0

নীচের উদাহরণ অনুসরণ করুন:

public enum ErrorCodes {
NO_File("No file found. "),
private ErrorCodes(String value) { 
    this.errordesc = value; 
    }
private String errordesc = ""; 
public String errordesc() {
    return errordesc;
}
public void setValue(String errordesc) {
    this.errordesc = errordesc;
}

};

আপনার কোডে এটিকে কল করুন:

fileResponse.setErrorCode(ErrorCodes.NO_FILE.errordesc());

0

লোকাল ত্রুটি কোড সংস্থানগুলি পরিচালনা করতে আমি কোনও এন্টারপ্রাইজ অ্যাপ্লিকেশনটিতে ত্রুটি কোডগুলি সংজ্ঞায়িত করতে প্রপার্টি রিসোর্সবাণ্ডল ব্যবহার করি। ত্রুটি কোডের সংখ্যা বিশাল এবং কাঠামোগত হলে লেখার কোডের পরিবর্তে ত্রুটি কোডগুলি হ্যান্ডেল করার সর্বোত্তম উপায় (কয়েকটি ত্রুটি কোডের জন্য ভাল হতে পারে)।

প্রপার্টি রিসোর্সবাণ্ডলে আরও তথ্যের জন্য জাভা ডকটি দেখুন

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.