java和安卓中的异常处理
我已经学会了java的基本知识。我想知道异常处理的相关知识
1)可以使用吗
try{............
}catch(Exception ex){
........
}
而不是像这样更具体的东西
try{............
}catch(FileNotFoundException ex){
........
}
这样,我不知道将抛出什么类型的异常
2)如何确定代码的哪一部分位于try
块内。如果我把整个代码放在“try”里面,然后转过脸来,那会是件坏事吗
3)如果我必须具体说明catch块,那么我如何知道可以抛出什么类型的异常
# 1 楼答案
答案是这取决于
如果希望应用程序针对不同的异常类型表现不同,那么
try
块应该很短,并且应该分别捕获异常但是,如果您决定以通用方式处理代码故障,则可以在一个
catch
块中捕获所有异常,例如,执行以下操作:在现实生活中,这通常比这更复杂,您应该决定单独处理哪些错误,以及以单一、通用的方式处理哪些错误
# 2 楼答案
这是一个糟糕的变体。例如:
但是可以有另一个
Exception
,例如NullPointerException
。如果您将捕获所有异常,则更难发现错误:在本例中,您将看到一个
NullPointerException
,但您会认为这是一个IOException
最好的变体是:
如果您想捕获一些异常,或者如果必须没有
null
,则不编写第二个catch
块,您将发现所有错误,而这将是不必要的对不起,我的英语不好
# 3 楼答案
正如我所说的,如果可以的话,最好选择更具体的方法,但如果您不确定,那么可以使用这种方法
意味着一般的苛求应该排在最后
# 4 楼答案
Java有两种类型的异常
1检查异常
2未检查的异常
所以你的问题是
How to decide what part of code be inside try block.
Java强制您在try块中编写代码块,这可能导致第一种类型的异常强>
您可以编写
e.printStackTrace();
来了解导致异常的详细信息# 5 楼答案
1)使用try{..}捕获(例外e){..}使您的代码更加紧凑,能够在单个位置管理异常。 您还可以连接catch块以管理几种类型的异常:
请注意,块的顺序是相关的:在示例中,如果同时存在FileNotFoundException和NullPointerException,则会在FileNotFoundException捕获块中重定向
2)try-catch块显然会影响代码的性能,因此我认为您只需要放置以下代码: -不在您的控制之下(例如,第三方库等) -使用不可靠的介质(例如套接字连接、文件IO等) -利用异常处理来表示特定行为(例如GoogleAppEngine超时异常等)