Java基础笔记总结(12)-异常处理,File类

JVM默认是如何处理异常的

main函数有两种处理方式:

1、自己处理该异常然后继续运行

2、自己没有针对的处理方式,只有交给main的jvm进行处理

jvm默认的异常处理机制,就将异常进行处理

并将该异常的名称,异常的信息,异常的出现位置打印只控制台,并将程序停止运行

常见异常 ArithmeticException算数异常

------------------------------------------------------

try检测异常 catch捕获异常 finally释放资源:

try catch 处理问题后,后续代码可以继续执行(try catch可以跟多个)如果第一个catch处理完,后面的catch不再检测了

try catch finally

try finally

注意 如果第一个写了Exception后,后面的不能在写ArithmeticException,没有意义

JDK1.7如何处理多个异常

catch(ArithmeticException|ArrayIndexOutOfBoundsException e)

-------------------------------------------------------

编译期异常和运行期异常

运行时异常,所有RuntimeException都属于运行时异常,

编译时异常,必须显示处理,否则无法通过编译

--------------------------------------------------------

Throwable常见方法

getMessage()获取错误信息

toString() 返回异常类型和异常信息

printStackTrace()获取异常类名和异常信息,以及异常出现在程序中的位置,返回值void

-------------------------------------------------------

throw方式处理异常

如果某一个属性满足条件,则使用语句终止

public void xx() throws Exception{

throw new Exception("xxx");

}

方法中如果抛出RuntimeException 则无需再处理该异常,在方法上无需声明

编译时异常的抛出,必须对其进行处理

运行时异常的抛出,可以处理,也可以不处理

throw在功能方法内部,程序不能运行就进行跳转,后面紧跟随异常对象

throws 用在方法声明后面,跟异常类名,可以用多个异常类名,表示抛出异常,用该放着调用者处理

-----------------------------------------------------------

finally

被finally控制的语句体一定会执行,特殊情况,System.exit(0);直接退出java虚拟机

用于释放资源,常见于数据库和IO流

方法结束前要检查是否要执行finally方法

final finally finalize的区别

final 可以修饰类 不能被继承,修饰方法 不能被重写,修饰变量 只能赋值一次,

finally是 try catch中的语句体,不能单独使用,用来释放资源

finalize 是一个方法,当垃圾回收器确定不会有该对象更多的引用,用对象垃圾回收器将其释放掉

finally return是建立了一个返回路径,然后再检测finally语句,虽然finally中执行了操作,但是打包好的值不能再改变

  千万不要再finally中写返回语句,因为finally作用是为了释放资源,是肯定会执行的,如果在这里存放返回语句,那么try和catch结果都会被改变。

--------------------------------------------------------------

子类重写父类方法,子类方法必须抛出相同的异常和父类异常的子类

如果父类抛出多个异常,子类重写父类是,必须抛出相同异常和它的子集

如果重写的方法没有抛出异常,那么子类方法只能try,不能抛throw

异常处理:

如果该功能内部可以将问题处理,用try,如果处理不了,交由调用者处理,这里用throw

后续程序需要继续运行就用try:有异常并不会停止程序

后续程序不需要继续运行就用throws

alt+shift+z try catch快捷键

--------------------------------------------------------------

File类 (路径:文件路径或者文件夹路径)

路径分为绝对路径和相对路径

绝对路径是固定路径,从盘符开始

相对路径是相对于某个位置 Eclipse中指当前项目,而dos下指当前路径

FileInputStream fis = new FileInputStream("xxx.txt");

dos下指代当前路径

File file = new File("F://xxx.txt");//注意考虑转义字符

bool flg = file.exists();文件是否存在

File file2 = new File("xxx.txt");

File parent =new File("F://父类路径");

String child = "子类路径格式";

File file = new File(parent,child);

----------------------------------------------------------------

File类的创建过程

File file = new File("");

bool flg = file.createNewFile();//如果存在该文件,就不创建

没有后缀也能创建文件

file.mkdir();创建文件夹

File file2 = new File("bb.txt");

file2.mkdir();创建了一个带后缀的文件名称

File file3 = new File("bbb//ccc");

file2.mkdirs();创建多级文件

file.mkdirs();

----------------------------------------------------------------

File类重命名和删除功能

File file1 = new File("xxx.txt");

如果路径相同,就是改名,不相同就是改名+剪切

File file2 = new File("ooo.txt");

file1.renameTo(file2);

File file  = new File("xxx.txt");

file.delete();

如果要删除文件夹,如果有嵌套文件夹,则不能删除父类文件夹

File file2 = new File("aaa");

注意:Java删除不走回收站

---------------------------------------------------------------------

Filel类的判断方法

File file = new File("");

file.isDirectory()判断是否是目录,文件夹

file.isFile()判断是否是文件

file.exists()判断是否存在

file.canRead()判断是否可读

file.setReadable(false)设置是否可读 windows认为所有文件都是刻度的

file.canWrite()判断是否可写

file.setWritable(false)可以设置不可写

file.isHidden()判断是否可以隐藏

--------------------------------------------------------------

File的获取功能

file.getAbsoulutePath()和获取绝对路径

file.getPath()获取路径//传相对路径获取相对路径,传绝对获取绝对路径

file.getName()获取名称

file.length()获取文件字节数

file.lastmodified()获取最后一次修改时间

String[] strs = file.list();获取指定目录下所有文件和文件夹的名称

File[] files = file.listFiles();获取指定目录下的所有文件或者文件夹

-----------------------------------------------------------------

输出指定目录下的指定后缀名

File dir = new File("E:\\");

String[] arr = dir.list();

for(String string :arr){

  if(String string :arr){

if(string.endsWith(".jpg"));}

}

File[] fileList = dir.listFiles();

for(File subFile : subFiles){

if(subFile.isFile()&&subFile.getName().endsWith(".jpg"))

}

-----------------------------------------------------------------------

File文件名称过滤器啊

String[] arr = dir.list(new FilenameFilter{

public boolean accept(File dir,String name){

dir 是封装路径 name是文件名称

File file = new File(dir,name);

  return file.isFile()&&file.getName().endsWith("opg");

}

});

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,542评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,596评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 158,021评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,682评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,792评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,985评论 1 291
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,107评论 3 410
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,845评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,299评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,612评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,747评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,441评论 4 333
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,072评论 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,828评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,069评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,545评论 2 362
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,658评论 2 350

推荐阅读更多精彩内容