//1.常见异常
package com.mlt.d3_exception;
public class ExceptionDemo {
public static void main(String[] args) {
//1.数组索引越界异常:ArrayIndexOutOfBoundsException
int[] arr={1,2,3};
System.out.println(arr[1]);
// System.out.println(arr[3]);//运行出错 程序终止
//2.空指针异常:NullPointerException.直接输出没用问题,但是调用空指针的变量就会出错
String name=null;
System.out.println(name);
// System.out.println(name.length());运行出错 程序终止
//3.类型转换异常:ClassCastExxwption
Object o =23;
// String s = (String) o;运行出错 程序终止
//4.数字操作异常:ArithmeticException
// int a=10/0; 运行出错 程序终止
//5.数字转换异常:NumberFormatException
String s1="23a";
//Integer a =Integer.valueOf(s1); 运行出错 程序终止
System.out.println();
System.out.println("程序结束-----");
}
}
//2 编译时异常
package com.mlt.d5_exception_javac;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
public class ExceptionDemo {
public static void main(String[] args) throws ParseException {//需要解决
String date="2022-08-01 19:07:22";
//创建一个简单日期格式化对象
SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
//解析字符串成为时间对象
Date d =sdf.parse(date);
System.out.println(d);
}
}
//3.默认主线程
package com.mlt.d6_exception_default;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
public class ExceptionDemo {
public static void main(String[] args) throws ParseException {
System.out.println("程序开始。。。");
avg(10,0);
System.out.println("程序结束。。。");
}
public static int avg(int a,int b){
System.out.println(a);
System.out.println(b);
int c=a/b;
return c;
}
}
//4.可以使用 try catch捕捉
package com.mlt.d7_exception_handle;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.InputStream;
import java.text.SimpleDateFormat;
import java.util.Date;
public class ExceptionDemo03 {
public static void main(String[] args) {
System.out.println("程序开始。。。");
//创建一个简单日期格式化对象
try {
prase1("2022-08-01 19:07:22");
System.out.println("成功!");
} catch (Exception e) {
e.printStackTrace();
System.out.println("失败!");
}
System.out.println("程序结束。。。");
}
public static void prase1(String date) throws Exception {
SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
//解析字符串成为时间对象
Date d =sdf.parse(date);
System.out.println(d);
InputStream is=new FileInputStream("e");
}
}
//5.运行时异常 代码有问题
package com.mlt.d8_exception_runtime;
import java.util.Scanner;
public class Test {
public static void main(String[] args) {
//键盘输入 必须是23.5
Scanner sc =new Scanner(System.in);
while (true){
try {
System.out.println("请输入你的定价!");
String s= sc.nextLine();
double d= Double.valueOf(s);
if (d>0){
System.out.println("定价成功!"+d);
break;
}else {
System.out.println("定价失败请输入正数!");
}
} catch (NumberFormatException e) {
System.out.println("您输入的格式有误!请输入输入!最好是正数");
}
}
}
}
//6.自定义异常
package com.mlt.d9_exception_custom;
public class AgeException extends Exception{
public AgeException() {
}
public AgeException(String message) {
super(message);
}
}
package com.mlt.d9_exception_custom;
public class AgeRuntimeException extends RuntimeException{
public AgeRuntimeException() {
}
public AgeRuntimeException(String message) {
super(message);
}
}
package com.mlt.d9_exception_custom;
public class ExceptionDemo {
public static void main(String[] args) {
// try {
// checkAge(-34);
// } catch (AgeException e) {
// e.printStackTrace();
// }
checkAge2(-34);
}
private static void checkAge2(int i) {
//抛出去异常给调用者
//throw:在方法内部直接创建一个异常对象,并从此点抛出
//throws:用在方法申明上的,抛出方法内部的异常
if(i>200||i<0){
throw new AgeRuntimeException(i+ " is agebaocuo");
}else {
System.out.println("执行成功!为"+i);
}
}
private static void checkAge(int i) throws AgeException {
//抛出去异常给调用者
//throw:在方法内部直接创建一个异常对象,并从此点抛出
//throws:用在方法申明上的,抛出方法内部的异常
if(i>200||i<0){
throw new AgeException(i+ " is agebaocuo");
}else {
System.out.println("执行成功!为"+i);
}
}
}
830

被折叠的 条评论
为什么被折叠?



