一、Java异常(一) Java异常简介及其架构 https://www.cnblogs.com/skywang12345/p/3544168.html
1、自定义异常 public class ExceptionTest {
public static void main(String[] args) {
// TODO Auto-generated method stub
// Integer it=5;
Integer it = null;
try {
System.out.println("aaaaaaa");
if (true) {// 自己定义的异常
throw new RuntimeException("出差类");
}
// int i=it;
// System.out.println("版斑斑驳驳");
// int [] nums= {2,3,4,5};
// System.out.println(nums[6]);
} catch (RuntimeException e) {
System.out.println("wrong" + e.getMessage());
e.printStackTrace();// 把错误信息打印在控制台,这不是处理异常的好方法,不能随便用
// 处理异常,但是里面什么也没有写,这是吃异常,不能这么写
}
/*
* catch(NullPointerException e ) { System.out.println("i不能为null");
* }catch(ArrayIndexOutOfBoundsException e) { System.out.println("超出索引号"); }
* catch(NullPointerException | ArrayIndexOutOfBoundsException e) {
* System.out.println("发生❌");//jdk1.7以后支持这种写法 }
*/
System.out.println("cccccc");
}
}
2、在main方法里面调用异常 import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date;
public class ExceptionTest2 {
public static void main(String[] args) throws FileNotFoundException, ParseException {
// TODO Auto-generated method stub
try {
if(true) {
//throw new RuntimeException();//抛出来RuntimeException,可以不用处理,
//throw new FileNotFoundException();//除了RuntimeException和其子类外,exception其他异常都要处理
throw new IOException();
}
}catch(FileNotFoundException f) {
f.printStackTrace();
}catch(IOException i) {
i.printStackTrace();
}
/* SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");//自己处理异常
Date date;
try {
date = sdf.parse("2015-03-14");
System.out.println(date);
FileInputStream fis=new FileInputStream("w:\\1.txt");
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
System.out.println("解析日期出错");
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
System.out.println("文件未读取");
}*/
/* SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");
Date date = sdf.parse("2015-03-14");
System.out.println(date);
FileInputStream fis=new FileInputStream("w:\\1.txt");*/ //在main处抛出异常
try { //自己处理异常
test();
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
test();//在main处抛出异常
}
static void test() throws ParseException, FileNotFoundException {
SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");//把异常抛出去,有调用者处理
Date date = sdf.parse("2015-03-14");
System.out.println(date);
FileInputStream fis=new FileInputStream("w:\\1.txt");
}
}
3、调用继承的异常 public class ExceptionTest3 {
public static void main(String[] args) {
// 自定义异常
try {
test(1);//调用者处理异常类
} catch (MyException2 e) {
// TODO Auto-generated catch block
e.printStackTrace();
System.out.println("chuwuo"+e.getMessage());
}
}
static void test(int i) throws MyException2 {
if(i<10) {
//throw new IllegalArgumentException("wrong");//runtimeexception 不用处理
//throw new MyException1("wrong wrong "); MyException1是runtimeexception子类,不用处理
throw new MyException2("wrong wrong ");//MyException2是exception的子类,异常要处理
//抛出去让调用着处理
}
}
}
public class MyException1 extends RuntimeException{
public MyException1() {
super();
// TODO Auto-generated constructor stub
}
public MyException1(String message, Throwable cause, boolean enableSuppression, boolean writableStackTrace) {
super(message, cause, enableSuppression, writableStackTrace);
// TODO Auto-generated constructor stub
}
public MyException1(String message, Throwable cause) {
super(message, cause);
// TODO Auto-generated constructor stub
}
public MyException1(String message) {
super(message);
// TODO Auto-generated constructor stub
}
public MyException1(Throwable cause) {
super(cause);
// TODO Auto-generated constructor stub
}
}
public class MyException2 extends Exception {
public MyException2() {
super();
// TODO Auto-generated constructor stub
}
public MyException2(String message, Throwable cause, boolean enableSuppression, boolean writableStackTrace) {
super(message, cause, enableSuppression, writableStackTrace);
// TODO Auto-generated constructor stub
}
public MyException2(String message, Throwable cause) {
super(message, cause);
// TODO Auto-generated constructor stub
}
public MyException2(String message) {
super(message);
// TODO Auto-generated constructor stub
}
public MyException2(Throwable cause) {
super(cause);
// TODO Auto-generated constructor stub
}
}