常见的程序异常?
- IO异常,边界异常,内存异常
- ?
异常机制是什么?
- 程序员很快知道发生了什么异常,在哪里发生的
- 程序能够自动处理异常
Java的异常机制?
- Error 代表JVM的错误
- Run time Exception
- Normal Exception
Java异常输出
- JVM打印
- Exception.printStackTrace
写道public class Test {
public void aa() throws Exception
{
throw new Exception("aaaaaa");
}
public void bb() throws Exception
{
aa();
}
public void cc() throws Exception
{
try {
bb();
} catch (Exception e) {
e.printStackTrace();【多余内容】
throw new Error(e);【异常链插入】
}
}
public static void main(String[] args) throws Exception
{
Test tt = new Test();
tt.cc();
}
java.lang.Exception: aaaaaa ==》
Exception.printStackTrace (类型,内容),重复内容
at Test.aa(Test.java:10)
at Test.bb(Test.java:14)
at Test.cc(Test.java:19)
at Test.main(Test.java:28)
Exception in thread "main" java.lang.Error: java.lang.Exception: aaaaaa ==》(JVM print 线程,类型,内置类型,内容)
at Test.cc(Test.java:22)
at Test.main(Test.java:28)
Caused by: java.lang.Exception: aaaaaa ==》异常变换
at Test.aa(Test.java:10)
at Test.bb(Test.java:14)
at Test.cc(Test.java:19)
... 1 more
public class Test {
at Test.aa(Test.java:10)
at Test.bb(Test.java:14)
at Test.cc(Test.java:19)
at Test.main(Test.java:28)
Exception in thread "main" java.lang.Error: java.lang.Exception: aaaaaa ==》(JVM print 线程,类型,内置类型,内容)
at Test.cc(Test.java:22)
at Test.main(Test.java:28)
Caused by: java.lang.Exception: aaaaaa ==》异常变换
at Test.aa(Test.java:10)
at Test.bb(Test.java:14)
at Test.cc(Test.java:19)
... 1 more
public void aa() throws Exception
{
throw new Exception("aaaaaa");
}
public void bb() throws Exception
{
aa();
}
public void cc() throws Exception
{
try {
bb();
} catch (Exception e) {
throw new Exception("aa"); [导致异常链中断]
}
}
Exception in thread "main" java.lang.Error: aa
at Test.cc(Test.java:22)
at Test.main(Test.java:31)
不好的异常处理代码
- catch里没有处理,又不throw
- 异常链中断