什么是异常
Exception
,意思是例外。这些例外情况,怎么让我们写的程序作出合理的处理,而不至于程序崩溃简单分类
检查性异常
:最具代表的检查性异常是用户错误或问题引起的异常,这是程序员无法预见的,例如打开一个不存在的文件时,一个异常就发生了,这些异常在编译时不能被简单地忽略运行时异常
:运行时异常可能是程序员避免的异常。与检查性异常相反,运行时异常可以在编译时被忽略错误
:错误不是异常,而是脱离程序员控制的问题。错误在代码中经常被忽略。例如,当栈溢出时,一个错误就发生了,他们在编译也检查不到的Error
和异常Exception
Error
OutOfMemoryError
。这些异常发生时,Java虚拟机(JVM)一般会选择线程终止Exception
在Exception分支中有一个重要的子类RuntimeException
(运行时异常)
这些已成一般是有程序逻辑错误引起的,程序应该从逻辑角度尽可能避免这类异常的发生;
Error和Exception的区别:Error通常是灾难性的致命错误,是程序无法控制和处理的,当出现这些异常时,Java虚拟机(JVM)一般会选择终止线程;Exception通常情况下是可以被程序处理的,并且在陈旭中应该尽可能的去处理这些异常
异常处理的五个关键字:
package com.exception;
/**
* 异常
*/
public class Demo1 {
public static void main(String[] args) {
int x=1;
int y=0;
try {//可能会有出异常的代码
new Demo1().aa();
}catch (ArithmeticException e){//捕获到异常 后执行的代码
//可以有多个catch去捕获 但是较大的异常要放在后面 多个catch只会执行一个 和if else if类似
System.out.println("算数异常");
e.printStackTrace();//打印栈信息
}catch (Error e){
// System.exit(0);//终止程序
System.out.println("Error");
} catch (Exception e){
System.out.println("Exception");
}catch (Throwable e){
System.out.println("Throwable");
}finally { //不管是否发生异常 最终一定会执行的代码
System.out.println("finally");
}
}
public void aa(){
bb();
}
public void bb(){
aa();
}
public void cc() throws ArithmeticException{
throw new ArithmeticException();
}
}
使用Java内置的异常类可以描述在编程时出现的大部分异常情况。除此之外,用户还可以自定义异常。用户自定义异常类,只需继承Exception类即可
在程序中自定义异常类,大体可分为以下几个步骤:
package com.exception;
/**
* 自定义异常类
*/
public class MyException extends Exception {
private String message;
public MyException(String message) {
this.message=message;
}
@Override
public String toString() {
return message;
}
}
package com.exception;
public class Test {
public static void main(String[] args) {
int age=-100;
if(age>120||age<0){
test();
}
}
public static void test(){
try {
throw new MyException("年龄不规范");
} catch (MyException e) {
System.out.println(e);
}
}
}
实际应用中的经验总结
到此java基础已经学完了,这一块偏理论的东西比较多,好好消化一下,学无止境,加油!
java异常:try、catch、finally、throw、throws以及自定义异常类
原文:https://www.cnblogs.com/ljhStudy/p/15246451.html