解决异常的方法:
package 异常;
/*
try...catch...
格式:
try{
可能出现异常的代码
}catch(异常类名 变量名){
异常处理的代码;
}
程序从try里面的代码开始进行
出现异常,会自动生成一个异常类对象,该异常对象将被提交给java运行时系统
java运行时系统接收到异常对象时,会到catch中去找匹配的异常类,找到后进行异常的处理
执行完毕后,程序还可以继续往下执行
Throwable的成员方法
推荐:
public void printStackTrace()
把异常的错误信息输出到控制台
*/
public class ExceptionDemo1 {
public static void main(String[] args) {
System.out.println("开始");
method();
System.out.println("结束");
}
public static void method(){
try {
int[] arr={1,2,3};
System.out.println(arr[3]);
}catch(ArrayIndexOutOfBoundsException e){
// System.out.println("你访问的数组索引不存在");
e.printStackTrace();
}
}
}
package 异常;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
/*
throws
格式:这个格式是跟在方法的括号后面的
*/
public class ExceptionDemo2 {
public static void main(String[] args) {
System.out.println("开始");
try {
method();
} catch (ParseException e) {
e.printStackTrace();
}
System.out.println("结束");
}
public static void method() throws ParseException {//格式
String s="2030-11-10";
SimpleDateFormat sdf = new SimpleDateFormat("yyyy.MM.dd");
Date d=sdf.parse(s);//parse这里的异常
}
}
自定义异常:
package 异常.自定义异常;
/*
public class 异常类名 extends Exception{
无参构造
带参构造
}
throws:
在方法声明后面,跟的是异常类名
表示出现异常的一种可能性,并不一定就发生
throw:
用在方法体内,跟的是异常对象名
执行throw一定抛出了某种异常
*/
public class ScoreException extends Exception {
public ScoreException(){}
public ScoreException(String message) {
super(message);
}
}
package 异常.自定义异常;
public class Teacher {
public void checkScore(int score) throws ScoreException {
if (score<0||score>100) {
throw new ScoreException("你给的分数有误");
}else{
System.out.println("分数正常");
}
}
}
package 异常.自定义异常;
import java.util.Scanner;
public class TeacherText {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
System.out.println("请输入分数:");
int score = sc.nextInt();
Teacher t = new Teacher();
try {
t.checkScore(score);
} catch (ScoreException e) {
e.printStackTrace();
}
}
}