ブール値をマーシャリングおよびアンマーシャリングするためにJAXBXMLadapterを使用しています。アプリケーションのXMLファイルには、C#アプリケーションからもアクセスできます。このXMLファイルを検証する必要があり、これはXSDを使用して行われます。C#アプリケーションは、ブールノードに「True」値を書き込みます。ただし、XSDでは「true / false」または「1/0」しか許可されないため、同じことが検証されます。そのため、XSDでブール値の文字列を保持しました。その文字列はXMLAdapterによって検証され、マーシャリングとアンマーシャリングが行われます。XMLアダプタは次のとおりです。
public class BooleanAdapter extends XmlAdapter<String, Boolean> {
@Override
public Boolean unmarshal(String v) throws Exception {
if(v.equalsIgnoreCase("true") || v.equals("1")) {
return true;
} else if(v.equalsIgnoreCase("false") || v.equals("0")) {
return false;
} else {
throw new Exception("Boolean Value from XML File is Wrong.");
}
}
@Override
public String marshal(Boolean v) throws Exception {
return v.toString();
}
}
上記のコードは通常の状態で機能しますが、無効なデータ(例:"abcd"または"")がxmlファイルから読み取られると、 "throw new Exception();" は伝播されず、Unmarshalプロセスは次のノードの読み取りに進みます。例外がスローされたらすぐにアプリケーションを停止したい。私の例外は食べ尽くされているようです。どんな助けでも大歓迎です。
この問題を解決するにはどうすればよいですか?