我正在开发一个 android 服务并遇到两种不同的样式来编写代码来处理验证。
第一种样式:使用布尔或显式检查。在这种方法中,我返回从函数中获得的任何值。返回值可以为 null、Closed(无效)。
boolean fbConnected = appPrefences.isFBConnected();
if (!fbConnected)
{
ShowNotification("FB not connected");
stopSelf();
return;
}
Session session = GetSession();
if (session.isClosed())
{
ShowNotification("Session not valid");
stopSelf();
return;
}
Coordinates result = getLocation();
if(result == null)
{
ShowNotification("Could not get location");
stopSelf();
return;
}
// Do something finally with Session, FB and location
第二种风格:使用异常处理。在这里,如果会话关闭(无效)或位置为空,我会从实用程序方法中抛出我自己的自定义异常。我处理如下:
try
{
appPrefences.connectToFb();
Session session = GetSession();
Coordinates result = getLocation();
}
catch(FBException e)
{
ShowNotification("FB not connected");
stopSelf();
return;
}
catch(SessionException e)
{
ShowNotification("Session not valid");
stopSelf();
return;
}
catch(LocationException e)
{
ShowNotification("Could not get location");
stopSelf();
return;
}
// Do something finally with Session, FB and location
在我看来,第一个更好,原因如下:
- 在第二种方法中,抛出异常会导致性能下降。
使用第一种方法可以吗,还是使用第二种方法有一些真正的好处?