我尝试解码从捕获返回的响应,这是我尝试过的:
console.log('==============STREET REPORT==============')
// key = 'amesSt', value = 500
const streetLengths = new Map();
streetLengths.set('amesSt', 500);
streetLengths.set('bentonSt', 1200);
streetLengths.set('chaseSt', 750);
streetLengths.set('depewSt', 200);
console.log(streetLengths);
// classify streets
function streetClass(key, value) {
if (value < 250) {
console.log(`${key} Street is classified as small`);
} else if (value >= 250 && value < 600) {
console.log(`${key} Street is classified as normal`);
} else if (value >= 600 && value < 1000) {
console.log(`${key} Street is classified as big`);
} else if (value >= 1000){
console.log(`${key} Street is classified as huge`);
} else{
console.log('Normal');
};
};
console.log('Size classification:');
//key = 500, value = 'amesSt'
streetLengths.forEach((key, value) => {
streetClass(key, value);
});
错误:类型'_Exception'不是类型'字符串'的子类型
print(err):
例外:{ “错误”:{ “代码”:“ invalid_expiry_year” } }
我想获取“代码”的值,我尝试了很多事情,但是没有用,
有什么主意吗?
try{
...
} catch (err) {
//JsonCodec codec = new JsonCodec(); // doesn't work
//var decoded = codec.decode(err);
...
}
然后我得到:
答案 0 :(得分:0)
我终于找到了解决方案:
catch (response) {
var err=response.toString().replaceAll('Exception: ', '');
final json=JSON.jsonDecode(err);
print(json['error']['code']);
}
答案 1 :(得分:0)
您可以获得message
属性并jsonDecode
。
try {
} catch (e) {
var message = e.message; // not guaranteed to work if the caught exception isn't an _Exception instance
var decoded = jsonDecode(message);
print(decoded['error']['code'])'
}
所有这些都是滥用Exception
的结果。请注意,您通常不想想要throw Exception(message);
。将json编码的消息放入其中并不是传达有关异常的详细信息的最佳方法。而是编写Exception
的自定义实现并捕获特定类型。
class InvalidDataException implements Exception {
final String code;
InvalidDataException(this.code);
}
try {
} on InvalidDataException catch(e) {
print(e.code); // guaranteed to work, we know the type of the exception
}
不建议直接使用
new Exception("message")
创建Exception实例,并且仅在开发过程中将其作为临时措施,直到完成库使用的实际异常为止。
另请参阅https://www.dartlang.org/guides/language/effective-dart/usage#avoid-catches-without-on-clauses