Gson ব্যবহারের সময় কিছু সাধারণ ত্রুটি বা exceptions দেখা দিতে পারে। এগুলি সাধারণত Serialization, Deserialization, TypeMismatch ইত্যাদি কারণে ঘটে থাকে। নিচে কিছু সাধারণ Gson ত্রুটি এবং exception handling সম্বন্ধে আলোচনা করা হয়েছে।
1. JsonSyntaxException
JsonSyntaxException ত্রুটিটি তখন ঘটে যখন JSON ডেটা সঠিকভাবে ফরম্যাট করা হয় না বা ভুল সিনট্যাক্স ব্যবহার করা হয়। এটি JSON স্ট্রিং পাড়ার সময় ঘটতে পারে।
উদাহরণ:
import com.google.gson.Gson;
import com.google.gson.JsonSyntaxException;
public class Main {
public static void main(String[] args) {
String invalidJson = "{\"name\":\"John Doe\", \"age\":30"; // Missing closing bracket
Gson gson = new Gson();
try {
// Invalid JSON, missing closing bracket
Person person = gson.fromJson(invalidJson, Person.class);
} catch (JsonSyntaxException e) {
System.out.println("Invalid JSON syntax: " + e.getMessage());
}
}
}
ত্রুটি:
Invalid JSON syntax: com.google.gson.stream.MalformedJsonException: Expected '}' at line 1 column 35 path $.age
2. JsonParseException
JsonParseException সাধারণত JsonSyntaxException এর অধীনে আসে, তবে এটি JSON ডেটার ভুল ফরম্যাটে আসার কারণে বা অন্য কোনো পার্সিং সমস্যার কারণে ঘটতে পারে। এটি JSON ডেটাকে ঠিকভাবে পার্স করতে না পারলে ঘটে।
উদাহরণ:
import com.google.gson.Gson;
import com.google.gson.JsonParseException;
public class Main {
public static void main(String[] args) {
String invalidJson = "{\"name\":\"John Doe\", \"age\":\"abc\"}"; // age should be an integer
Gson gson = new Gson();
try {
Person person = gson.fromJson(invalidJson, Person.class);
} catch (JsonParseException e) {
System.out.println("Error parsing JSON: " + e.getMessage());
}
}
}
ত্রুটি:
Error parsing JSON: java.lang.NumberFormatException: For input string: "abc"
3. JsonIOException
JsonIOException তখন ঘটে যখন I/O অপারেশন চলাকালীন JSON ডেটা রিড বা রাইট করতে কোনো সমস্যা হয়। এটি সাধারণত ফাইল থেকে JSON পড়ার বা লিখার সময় ঘটে।
উদাহরণ:
import com.google.gson.Gson;
import com.google.gson.JsonIOException;
import java.io.FileReader;
import java.io.IOException;
public class Main {
public static void main(String[] args) {
try (FileReader reader = new FileReader("non_existent_file.json")) {
Gson gson = new Gson();
Person person = gson.fromJson(reader, Person.class);
} catch (IOException | JsonIOException e) {
System.out.println("Error reading/writing JSON file: " + e.getMessage());
}
}
}
ত্রুটি:
Error reading/writing JSON file: java.io.FileNotFoundException: non_existent_file.json (No such file or directory)
4. JsonNull (Null values in JSON)
যখন JSON ডেটাতে কোনো ফিল্ড null থাকে, এবং সেই ফিল্ডটি Java অবজেক্টে primitive type (যেমন int, double, etc.) হিসেবে মানচিত্রিত করতে চেষ্টা করা হয়, তখন এটি NullPointerException বা Gson এর পক্ষ থেকে সঠিকভাবে হ্যান্ডেল না হওয়া বিষয় হতে পারে।
উদাহরণ:
import com.google.gson.Gson;
import com.google.gson.JsonNull;
public class Main {
public static void main(String[] args) {
String json = "{\"age\":null}";
Gson gson = new Gson();
try {
Person person = gson.fromJson(json, Person.class); // Missing non-nullable fields may cause issues
} catch (NullPointerException e) {
System.out.println("Null value encountered: " + e.getMessage());
}
}
}
ত্রুটি:
Null value encountered: Cannot assign null to primitive type
5. IllegalStateException
IllegalStateException তখন ঘটে যখন Gson এর কোনো অবস্থা অবৈধ হয় বা API এর নিয়ম-নীতি অনুযায়ী কোনো অপারেশন করা যায় না। সাধারণত, JSON ডেটা প্রক্রিয়া করার সময় যখন আপনি কোনো অবৈধ JSON পদ্ধতি ব্যবহার করেন তখন এটি হতে পারে।
উদাহরণ:
import com.google.gson.Gson;
import com.google.gson.JsonElement;
import com.google.gson.JsonObject;
import com.google.gson.JsonSyntaxException;
public class Main {
public static void main(String[] args) {
String json = "{\"name\": \"John\", \"age\": 30}";
Gson gson = new Gson();
JsonElement element = gson.toJsonTree(json);
try {
// Trying to parse a JsonElement that was not parsed correctly
JsonObject jsonObject = element.getAsJsonObject();
} catch (IllegalStateException e) {
System.out.println("Illegal state while parsing JSON: " + e.getMessage());
}
}
}
ত্রুটি:
Illegal state while parsing JSON: Not a JSON Object: "name": "John", "age": 30
6. TypeMismatchException
TypeMismatchException তখন ঘটে যখন JSON ডেটার ধরনের সাথে Java অবজেক্টের ধরন মেলে না। যেমন, যদি JSON এ একটি স্ট্রিং দেয়া থাকে, কিন্তু Java ক্লাসে সেটি একটি int হিসেবে অ্যাক্সেস করতে চান, তখন এটি ঘটতে পারে।
উদাহরণ:
import com.google.gson.Gson;
import com.google.gson.JsonSyntaxException;
public class Main {
public static void main(String[] args) {
String json = "{\"age\":\"30\"}"; // age is a String in JSON
Gson gson = new Gson();
try {
Person person = gson.fromJson(json, Person.class); // Expecting an int, but it's a String
} catch (JsonSyntaxException e) {
System.out.println("Type mismatch: " + e.getMessage());
}
}
}
ত্রুটি:
Type mismatch: java.lang.NumberFormatException: For input string: "30"
7. UnsupportedOperationException
UnsupportedOperationException তখন ঘটে যখন আপনি Gson এর কোনো অপারেশন চেষ্টা করেন যা সাপোর্টেড নয়। এটি সাধারণত Gson এর ভিতরের কিছু ত্রুটি বা কিছু নির্দিষ্ট অপারেশন কার্যকরী না হওয়াতে ঘটে।
উদাহরণ:
import com.google.gson.Gson;
import com.google.gson.JsonElement;
import com.google.gson.JsonObject;
import com.google.gson.JsonSyntaxException;
public class Main {
public static void main(String[] args) {
String json = "{\"name\":\"John\"}";
Gson gson = new Gson();
JsonElement element = gson.fromJson(json, JsonElement.class);
try {
element.getAsJsonObject().addProperty("age", 30);
} catch (UnsupportedOperationException e) {
System.out.println("Operation not supported: " + e.getMessage());
}
}
}
ত্রুটি:
Operation not supported: JSON element is not a JSON object
Exception Handling এর জন্য কিছু টিপস:
try-catchব্লক ব্যবহার করুন: Gson এর সাথে কাজ করার সময় প্রায়ই JsonParseException, JsonSyntaxException, JsonIOException ইত্যাদি ত্রুটি ঘটতে পারে, তাই এগুলি সঠিকভাবে হ্যান্ডল করতেtry-catchব্লক ব্যবহার করুন।- Null এবং TypeMismatch: JSON ডেটায় যখন
nullথাকে বা ধরনের পার্থক্য থাকে, তখন সাবধান থাকুন এবং Optional বা Null checks ব্যবহার করুন। - Logging: ত্রুটির সঠিক তথ্য ট্র্যাক করতে
Loggerব্যবহার করতে পারেন, যাতে আপনি বুঝতে পারেন কোথায় এবং কেন ত্রুটি ঘটছে।
Gson এর সাথে কাজ করার সময় বিভিন্ন ধরনের ত্রুটি বা exceptions দেখা দিতে পারে, যেমন JsonSyntaxException, JsonParseException, JsonIOException, ইত্যাদি। এগুলির সঠিকভাবে মোকাবিলা করতে exception handling ব্যবহার করা উচিত যাতে JSON ডেটার সঠিক পার্সিং এবং Serialization/Deserialization প্রক্রিয়া বজায় থাকে।
Read more