Skip to content

Commit c9ae1f1

Browse files
authored
Merge pull request stleary#345 from johnjaylward/BetterErrorHandling
Adds JSONException for write value errors
2 parents ef7a5e4 + ad6bdd7 commit c9ae1f1

File tree

2 files changed

+26
-8
lines changed

2 files changed

+26
-8
lines changed

JSONArray.java

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1384,8 +1384,12 @@ public Writer write(Writer writer, int indentFactor, int indent)
13841384
writer.write('[');
13851385

13861386
if (length == 1) {
1387-
JSONObject.writeValue(writer, this.myArrayList.get(0),
1388-
indentFactor, indent);
1387+
try {
1388+
JSONObject.writeValue(writer, this.myArrayList.get(0),
1389+
indentFactor, indent);
1390+
} catch (Exception e) {
1391+
throw new JSONException("Unable to write JSONArray value at index: 0", e);
1392+
}
13891393
} else if (length != 0) {
13901394
final int newindent = indent + indentFactor;
13911395

@@ -1397,8 +1401,12 @@ public Writer write(Writer writer, int indentFactor, int indent)
13971401
writer.write('\n');
13981402
}
13991403
JSONObject.indent(writer, newindent);
1400-
JSONObject.writeValue(writer, this.myArrayList.get(i),
1401-
indentFactor, newindent);
1404+
try {
1405+
JSONObject.writeValue(writer, this.myArrayList.get(i),
1406+
indentFactor, newindent);
1407+
} catch (Exception e) {
1408+
throw new JSONException("Unable to write JSONArray value at index: " + i, e);
1409+
}
14021410
commanate = true;
14031411
}
14041412
if (indentFactor > 0) {

JSONObject.java

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2240,12 +2240,17 @@ public Writer write(Writer writer, int indentFactor, int indent)
22402240

22412241
if (length == 1) {
22422242
final Entry<String,?> entry = this.entrySet().iterator().next();
2243-
writer.write(quote(entry.getKey()));
2243+
final String key = entry.getKey();
2244+
writer.write(quote(key));
22442245
writer.write(':');
22452246
if (indentFactor > 0) {
22462247
writer.write(' ');
22472248
}
2248-
writeValue(writer, entry.getValue(), indentFactor, indent);
2249+
try{
2250+
writeValue(writer, entry.getValue(), indentFactor, indent);
2251+
} catch (Exception e) {
2252+
throw new JSONException("Unable to write JSONObject value for key: " + key, e);
2253+
}
22492254
} else if (length != 0) {
22502255
final int newindent = indent + indentFactor;
22512256
for (final Entry<String,?> entry : this.entrySet()) {
@@ -2256,12 +2261,17 @@ public Writer write(Writer writer, int indentFactor, int indent)
22562261
writer.write('\n');
22572262
}
22582263
indent(writer, newindent);
2259-
writer.write(quote(entry.getKey()));
2264+
final String key = entry.getKey();
2265+
writer.write(quote(key));
22602266
writer.write(':');
22612267
if (indentFactor > 0) {
22622268
writer.write(' ');
22632269
}
2264-
writeValue(writer, entry.getValue(), indentFactor, newindent);
2270+
try {
2271+
writeValue(writer, entry.getValue(), indentFactor, newindent);
2272+
} catch (Exception e) {
2273+
throw new JSONException("Unable to write JSONObject value for key: " + key, e);
2274+
}
22652275
commanate = true;
22662276
}
22672277
if (indentFactor > 0) {

0 commit comments

Comments
 (0)