首先给大家分享一个巨牛巨牛的人工智能教程,是我无意中发现的。教程不仅零基础,通俗易懂,而且非常风趣幽默,还时不时有内涵段子,像看小说一样,哈哈~我正在学习中,觉得太牛了,所以分享给大家!点
这里
可以跳转到教程
众所周知java提供了丰富的异常类,这些异常类之间有严格的集成关系,分类为
父类Throwable
Throwable的两个子类Error和Exception
Exception的两个子类CheckedException和RuntimeException
二 发现问题
通常捕获异常catch的时候最大catch到Exception这个类就为止了,当然这能够处理大部分的异常情况。
但是值得注意的是,Exception不能捕捉到所有的异常。
比如InvocationTargetException。
三 解决办法
catch(Throwable t)
{ }
浏览人工智能教程
方法
内catch块
throw
Exception
未
捕获
仍然编译通过的问题一个关于JDK7版本新特性的小问题在catch块抛出
异常
,并
没有
在
方法
名后声明
捕获
private void catch
Exception
Test() {
try { } catch (
Exception
e) {
throw
e;//jdk6编译未通过,jdk7编译通过
}即使
捕获
的是
【What】
异常
是程序
中
的一些错误,但是并不是所有的错误都是
异常
,并且错误有时候是可以避免的;比如,我们在进行代码的时候缺少符号,那么运行出来的错误是:
java
.lang.Error;但是如果你用了
异常
处理,比如你用0做了除数,会抛出
java
.lang.Arithmetic
Exception
的
异常
。
【Where】
那是不是你需要问,
异常
是哪里来的呢?
他有两个来源
线上代码不要使用printStackTrace()写完代码后请一定要检查下,代码
中
千万不要有printStackTrace()。因为printStackTrace()只会在控制台上输出错...
昨天花了不少时间debug客户碰到的一个蹊跷的程序错误。最终发现了问题是由一个C++
异常
抛出后无法catch到而导致的( 喏,这位老兄也提出了同样的问题)。此前一直自以为
exception
总是可以被安全catch到的。如果你也这么认为的话,呵呵, 那么你也应该去翻翻C++文档了。查阅了c++文档后发现,在以下情况,
exception
并不会被抛出。取而代之的是,terminate()将被调用。
没有
抓到空指针
异常
抛出的log:
[http-nio-8080-exec-10] ERROR - #######:Unexpected error, tx will rb! Info::queryDataSetForSumDimSectionSet::
java
.lang.reflect.Method
java
.lang.NullPointer
Exception
检查发现:
为什么
Exception
罩不住:
因为这个问题抛出的是 Error。
通常
捕获
异常
catch的时候最大catch到
Exception
这个类就为止了,当然这能够处理大部分的
异常
情况。
但是值得注意的是,
Exception
不能捕捉到所有的
异常
。比如InvocationTargetExce
Throw
able可以看做是
异常
世界
中
的Object,在
Java
中
所有
异常
都有一个共同的祖先:
Throw
able,
Throw
able有两个重要的子类:Error错误和
Exception
异常
,二者都是
异常
处理重点类。我们看一下普通的try/catch,接下来这种情况可能会有点特殊,
Runtime
Exception
运行时
异常
,出现此
异常
,程序
中
断(Runtime
Exception
不能
捕获
,不能抛出,不需要
捕获
)
运行时优先抛出
异常
其他类型的
异常
都要必须
捕获
或者抛出
Exception
:受检查的
异常
,这种
异常
是强制我们catch或
throw
的
异常
。你遇到这种
异常
必须进行catch或
throw
,如果不处理,编译器会报错。比如:IO
Exception
。
Runtime
Exception
:运行时
异常
,这种
异常
我们不需要处理,完全由虚拟机接管。比如我们常见的NullPointerExcept