编译异常:
代码编译过程中,系统报错,强制处理(try或抛(throw))。
运行时异常(RuntimeException):
概论:
程序在执行过后,由调用者或者调用者上级报出的错误信息、错误位置提示。
注意:
在抛出运行时异常时,方法声明上可以不用throws标识(与编译异常进行区分)
在编译代码时,可以对可能出现运行时异常的代码不进行处理,但在运行时,程序将到出现异常处,停止运行。
抛出运行时异常的好处:
方法中抛出运行时异常,方便记录错误,修改对应代码,确保程序执行下去
继承类之间方法重写异常的关系:
1.父类的方法抛出异常,子类的重写方法可以抛出异常,也可不抛出异常。
2.父类的方法没有抛出异常,子类的重写方法一定不能抛出异常。
3.子类重写方法中调用了一个异常的方法,只能选用try...catch处理,不能抛出
抛出异常案例:
需求:从键盘录入两个整数,实现两数相加、两数相除。
public class MyNum{
public MyNum() {
super();
}
public MyNum(int num1, int num2) {
super();
this.num1 = num1;
this.num2 = num2;
}
public int getNum1() {
return num1;
}
public void setNum1(int num1) {
this.num1 = num1;
}
public int getNum2() {
return num2;
}
public void setNum2(int num2) {
this.num2 = num2;
}
@Override
public String toString() {
return "除数:" + num1 + ", 被除数:" + num2 ;
}
}
public class IntTools {
private IntTools() {
}
public static int getIntNum(){
System.out.println("请输入一个数:");
Scanner scanner = new Scanner(System.in);
String string = scanner.nextLine();
try {
int num = Integer.parseInt(string);
return num;
} catch {
System.out.println("输入错误,请重新输入!!");
return getIntNum();
}
}
}
public class DivNotZeroException extends Exception {
/**
*
*/
private static final long serialVersionUID = 1L;
public DivNotZeroException() {
super();
}
public DivNotZeroException(String message) {
super(message);
}
}
public class Operact {
public MyNum getMyNum() {
int num1 = IntTools.getIntNum();
int num2 = IntTools.getIntNum();
MyNum myNum = new MyNum(num1, num2);
return myNum;
}
public String getChooseMethod() {
System.out.println("1.加法;2.除法");
int num = IntTools.getIntNum();
if (num == 1) {
return "+";
}else if (num == 2) {
return "/";
}else {
System.out.println("输入错误,请重新输入!!");
return getChooseMethod();
}
}
public int sum(MyNum myNum) {
return myNum.getNum1() + myNum.getNum2();
}
public int div(MyNum myNum) throws DivNotZeroException {
try {
return myNum.getNum1() / myNum.getNum2();
} catch (ArithmeticException e) {
throw new DivNotZeroException("除数为0");
}
}
public int getResultByOperactAndMyNum(String operact, MyNum myNum) {
if (operact.equals("+")) {
return sum(myNum);
}
try {
return div(myNum);
} catch (DivNotZeroException e) {
System.out.println(e.getMessage());
System.out.println("请重新输入两个数");
MyNum newNum = getMyNum();
return getResultByOperactAndMyNum(operact, newNum);
}
}
}
public class Test {
public static void main(String[] args) {
Operact operact = new Operact();
String chooseMethod = operact.getChooseMethod();
MyNum myNum = operact.getMyNum();
int result = operact.getResultByOperactAndMyNum(chooseMethod, myNum);
System.out.println(result);
}
}
File:
可以操作文件,可以操作文件夹,可以操作文件路径
File的方法:
public static void fun() {
String pathseparator = File.pathSeparator;
System.out.println(pathseparator);
String separator = File.separator;
System.out.println(separator);
}
public static void fun() {
File file = new File("/Users/lanou/Desktop/Test");
System.out.println(file);
boolean b1 = file.exists();
System.out.println(b1);
File file1 = new File("src/wl");
System.out.println(file1.getAbsolutePath());
boolean b2 = file1.exists();
System.out.println(b2);
String parent = "/Users/lanou/Desktop";
String child = "Test";
File file2 = new File(parent, child);
boolean b3 = file2.exists();
System.out.println(b3);
File f = new File("/Users/lanou/Desktop");
File file3 = new File(f, child);
System.out.println(file3.delete());
}
public static void fun() throws IOException {
File file = new File("/Users/lanou/Desktop/Test/kkk");
boolean b1 = file.createNewFile();
System.out.println(b1);
File file1 = new File("src/dp.txt");
boolean b2 = file1.createNewFile();
System.out.println(b2);
File file2 = new File("/Users/lanou/Desktop/Test/g");
boolean b3 = file2.mkdirs();
System.out.println(b3);
}
public static void fun() {
File file = new File("/Users/lanou/Desktop/Test/b");
boolean b1 = file.delete();
System.out.println(b1);
}
public static void fun() {
File file = new File("/Users/lanou/Desktop/Test/haha.txt");
boolean b1 = file.isDirectory();
boolean b2 = file.isFile();
System.out.println(b1);
System.out.println(b2);
}
// 获取路径
public static void fun() {
File file = new File("/Users/lanou/Desktop/Test/www.txt")
String path = file.getPath()
System.out.println(file.toString())
System.out.println(path)
String name = file.getName()
System.out.println(name)
long length = file.length()
System.out.println(length)
File parentFile = file.getParentFile()
System.out.println(parentFile)
File file = new File("/Users/lanou/Desktop/Test")
String[] list = file.list()
for (String string : list) {
System.out.println(string)
}
System.out.println("-----------------------------------")
File[] listFiles = file.listFiles()
for (File f : listFiles) {
System.out.println(f)
}
}