gpt4 book ai didi

java - Android 中未处理异常

转载 作者:行者123 更新时间:2023-12-01 20:19:35 25 4
gpt4 key购买 nike

下面是一些代码行

 @SuppressWarnings("MissingPermission")
public static Location getLocation() throws LocationNotFoundException{
mFusedLocationProviderClient.getLastLocation()
.addOnSuccessListener(myActivity, new OnSuccessListener<Location>() {
@Override
public void onSuccess(Location location) {
if(location!=null) {
mLocation = location;
}
else {
throw new LocationNotFoundException();
}
}
});
return mLocation;
}

现在,LocationNotFoundException 是一个自定义异常,扩展了 Exception 类。在我抛出自定义异常的行中,我收到一条错误,指出 LocationNotFoundException 未处理,即使我使用 throws 让异常沿着调用堆栈传递关键字,并且我使用 try/catch block 在调用特定方法的位置处处理异常。

这是我处理异常的地方。

 try {
mLocation = LocationUtil.getLocation();

} catch (LocationNotFoundException e) {
Toast.makeText(MainActivity.this, "Location Not found", Toast.LENGTH_LONG)
.show();
}

我在这里做错了什么?

最佳答案

抛出异常的范围与您预期的不同。它被抛出到匿名内部类的 onSuccess 方法的范围内。您无法从 getLocation 方法传播此异常,因为调用getLocation时不会抛出异常,但稍后当成功监听器被实际使用时。

另请注意,根据 OnSuccessListener 接口(interface)的约定,onSuccess 方法不能抛出异常。您需要在实现此方法时处理异常。

关于java - Android 中未处理异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45117427/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com