java学习day9 -- 异常,File
异常
所有的异常都有一个共同的父类,来自java.lang.throwable。
异常总的分为两类:
1.Error 代表系统级别错误,不是我们开发人员用的
2.Exception 代表程序可能出现的问题。异常也分为两类:RuntimeException(代码运行时出现的异常)和编译时异常。

异常的处理方式
1.jvm默认的处理方式
异常名称,异常原因,出现位置输出在控制台。并且程序停止运行,接下来的代码都不执行。
2.自己处理(捕获异常)
try{
可能出现异常的代码;
}catch(异常类名 变量名){
异常的处理代码;
}
可以自己处理,让接下来的代码也可以执行。
灵魂四问
1.如果try中没有遇到问题,怎么执行
try中没有遇到问题,会把try中的代码全部执行,不会走到catch中。
2.如果try中遇到多个问题,怎么执行
try中遇到多个问题,当遇到第一个问题时会直接跳转到catch。try中如果有多个异常,那么我们就要写多个catch与各个异常对应。
注意:当我们要捕获多个异常时,如果这些异常存在父子关系,父类一定要写在下面。
3.如果try中遇到的问题没有被捕获,怎么执行
程序会按jvm虚拟机默认异常处理方式执行。
4.如果try中遇到了问题,那么try下面的代码还会执行吗
try中遇到了问题,try中出现问题语句下面的代码都不运行了,会直接跳转到对应的catch当中,执行catch里面的代码。此时如果没有对应catch与之匹配,会交给虚拟机进行处理。
可以ctrl+alt+t,快速生成语句块
异常处理有特殊的成员方法: getmessage(),
toString(), 抛出简短描述
printStackTrace(); 异常错误信息输出在控制台(不会结束虚拟机,仅仅打印错误信息,不会停止程序运行。因为是使用System.err.println()方式打印,因此是红色的错误提示)
package Exception;
public class ExceptionDemo1{
public static void main(String[] args) {
int[] arr = {1,2,3,4,5,6};
//System.out.println(arr[10]);
//此处代码的执行顺序为:进入try中,对输出语句进行判断,此时出现数组越界异常
// 会new一个ArrayIndexOutOfBoundsException进入catch中进行比较,如果和catch中所写的异常一样
//则执行catch中代码
//然后走出try,继续执行接下来的代码。
// try {
// System.out.println(arr[0]);
// }catch (ArrayIndexOutOfBoundsException e){
// System.out.println("索引越界了");
// }
try {
System.out.println(arr[10]);
} catch (ArrayIndexOutOfBoundsException e) {
// String message = e.getMessage();
// System.out.println(message);
// String string = e.toString();
// System.out.println(string);
e.printStackTrace();
}
System.out.println("这段代码被继续执行了");
}
}
3.抛出异常
throws---->写在方法定义处,声明一个异常,告诉调用者使用本方法可能存在的异常
throw---->写在方法内,手动抛出异常对象,方法中下面的代码都不再执行了
自定义异常
定义一个异常类,写继承关系(如extends runtimeexception),包含空参构造和带参构造。
File
file对象就表示一个路径,可以是文件的路径也可以是文件夹的路径。这个路径可以是存在的也可以是不存在的.
只有创建了file对象,java才会将这段字符串与路径联系起来,否则仅仅视作一串字符。绝对路径带盘符,相对路径是不带盘符的,默认到当前项目下面去找
File的成员方法
isDirectory(),isFile(),exists(),length()(返回字节数量,无法获取文件夹大小),getAbsolutePath(),getPath(),getName()(带后缀),lastModified().
createNewFile()(创建的一定是文件,假如路径中文件没有后缀名,则会生成一个没没有后缀的文件),mkdir(),mkdirs(),delete()(删除的是文件不走回收站,会直接删除。删除的是文件夹分为两种情况,空文件夹直接删,有内容的文件夹删不了)。
listFiles()(获取当前路径下的所有内容。空文件夹返回长度为0的数组。有内容文件夹,所有内容放在file数组中返回。有隐藏文件,会把隐藏文件也返回。当访问的是需要有权限才能访问的文件夹,结果会返回null)
更多推荐




所有评论(0)