From 30dc22790c4b8bc64e7f336aeb779974cbb9e8a9 Mon Sep 17 00:00:00 2001 From: Simulant Date: Fri, 22 Mar 2024 12:02:09 +0100 Subject: [PATCH] extend syntax error information --- src/main/java/org/json/JSONTokener.java | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/src/main/java/org/json/JSONTokener.java b/src/main/java/org/json/JSONTokener.java index 0bc6dfb..5f724b1 100644 --- a/src/main/java/org/json/JSONTokener.java +++ b/src/main/java/org/json/JSONTokener.java @@ -299,7 +299,8 @@ public class JSONTokener { case 0: case '\n': case '\r': - throw this.syntaxError("Unterminated string"); + throw this.syntaxError("Unterminated string. " + + "Character with int code " + (int) c + " is not allowed within a quoted string."); case '\\': c = this.next(); switch (c) { @@ -322,7 +323,7 @@ public class JSONTokener { try { sb.append((char)Integer.parseInt(this.next(4), 16)); } catch (NumberFormatException e) { - throw this.syntaxError("Illegal escape.", e); + throw this.syntaxError("Illegal escape. \\u must be followed by a 4 digit number.", e); } break; case '"': @@ -332,7 +333,7 @@ public class JSONTokener { sb.append(c); break; default: - throw this.syntaxError("Illegal escape."); + throw this.syntaxError("Illegal escape. Escape sequence \\" + c + " is not valid."); } break; default: @@ -521,7 +522,7 @@ public class JSONTokener { */ @Override public String toString() { - return " at " + this.index + " [character " + this.character + " line " + + return " at index: " + this.index + " [character number " + this.character + " in line " + this.line + "]"; }