Java学习笔记——异常处理

一.学习之前

在没学这个板块的时候,我们对于程序相关的异常处理大致是提示错误信息,而后退出程序。

例如:


输出:

(1)正常:

(2)不正常:

二.学习之后:


One: try…catch…finally语句

try{

    //程序代码块

}

catch(Exceptiontype1 e)

{

    //对ExceptionType1的处理

{

catch(Exceptiontype2 e){

    //对ExceptionType2的处理

}

finally{

    //程序代码块

}

先看try…catch语句块(例)(这个代码块可以单独使用,不用finally):

输出结果:


这里面由于try代码块中的年龄类型不符合,即为异常,则不执行try语句,转而执行catch中的相关内容,这里输出的是"grogram over",后面的一大片红就是异常的类型以及相关信息。

再看finally:

完整的语句中一定要包含finally语句(这里说的完整语句是try…catch…finally语句),无论程序中是否有异常或者无论之前的try…catch语句块是否被执行,都会执行finally语句块中的内容。但是除了以下四种情况:

(1)在finally语句中发生异常

(2)在前面代码中使用了System.exit()退出程序。

(3)程序所在县城死亡。

(4)关闭CPU;

Two:常见异常类

                                         常见异常类表格:

这里仅写出冰山一角,写多了也没太大意义,况且大部分向我这样的人是记不住的,只要大致了解一下以至于以后看见这些异常不至于太陌生就行了。

Three:自定义异常

这里就很自由了,就算考试中有些异常记不住也可以通过自定义躲过一劫(当然了这种机会怕是不多)常见步骤大致如下:

(1)常见自定义异常类

(2)在方法中通过throw关键字抛出异常对象

(3)如果在当前异常的方法中处理异常,可以使用try…catch语句块进行捕获和处理,否则在方法的声明处通过throws关键字指明要抛出给方法调用者的异常,继续进行下一步操作。

(4)在出现异常的方法的调用者中捕获并处理异常。

示例如下:

输出结果:

Four:使用通过使用throw或throws来抛出异常(不想在当前方法中处理这个异常)

(1)throws关键字(应用在声明方法中,用来指定方法中可能抛出的异常,多个异常可用逗号分隔):

输出结果:

使用throws关键字将异常抛给上一级后,如果不想处理该异常,可以继续向上抛出,但最终要有能够处理该异常的代码。

(2)使用throw关键字抛出异常(应用于方法体中,程在执行到throw语句后立刻停止执行,若想通过上一级的代码捕捉异常,则要用throws关键字在方法的声明中抛出异常;如果要捕获throw关键字中的异常,则必须用try……catch语句块来捕捉):

举一个例子(这里的异常信息顺序不能变):

错误一:

错误二:

错误三:

正常输出:

​​​​​​​

Five:运行时的异常

这里仅写出一小部分。

try…with…resources语句

此语句的作用是关闭try…catch语句中使用的资源。

(1)关闭一个资源

输出结果:

(2)关闭多个资源

输出结果:

三.使用原则

Java异常强制用户考虑程序的强健性和安全性。异常处理不应用来控制程序的正确流程,其主要作用是获取程序来运行时发生的异常并运行相应的处理。编写代码处理某个方法可能出现的异常时,可遵循以下几条规则:

(1)在当前方法声明中使用try…catch语句捕获异常。

(2)在一个方法被覆盖时,覆盖它的方法必须抛出与它相同的异常或异常子类。

(3)如果父类抛出多个异常,则覆盖方法必须抛出那些异常的一个子集,不能抛出新的异常。

  • 15
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
文件上传是Web开发中常见的功能之一,Java中也提供了多种方式来实现文件上传。其中,一种常用的方式是通过Apache的commons-fileupload组件来实现文件上传。 以下是实现文件上传的步骤: 1.在pom.xml文件中添加以下依赖: ```xml <dependency> <groupId>commons-fileupload</groupId> <artifactId>commons-fileupload</artifactId> <version>1.3.3</version> </dependency> ``` 2.在前端页面中添加文件上传表单: ```html <form method="post" enctype="multipart/form-data" action="upload"> <input type="file" name="file"> <input type="submit" value="Upload"> </form> ``` 3.在后台Java代码中处理上传文件: ```java // 创建一个DiskFileItemFactory对象,用于解析上传的文件 DiskFileItemFactory factory = new DiskFileItemFactory(); // 设置缓冲区大小,如果上传的文件大于缓冲区大小,则先将文件保存到临时文件中,再进行处理 factory.setSizeThreshold(1024 * 1024); // 创建一个ServletFileUpload对象,用于解析上传的文件 ServletFileUpload upload = new ServletFileUpload(factory); // 设置上传文件的大小限制,这里设置为10MB upload.setFileSizeMax(10 * 1024 * 1024); // 解析上传的文件,得到一个FileItem的List集合 List<FileItem> items = upload.parseRequest(request); // 遍历FileItem的List集合,处理上传的文件 for (FileItem item : items) { // 判断当前FileItem是否为上传的文件 if (!item.isFormField()) { // 获取上传文件的文件名 String fileName = item.getName(); // 创建一个File对象,用于保存上传的文件 File file = new File("D:/uploads/" + fileName); // 将上传的文件保存到指定的目录中 item.write(file); } } ``` 以上代码中,首先创建了一个DiskFileItemFactory对象,用于解析上传的文件。然后设置了缓冲区大小和上传文件的大小限制。接着创建一个ServletFileUpload对象,用于解析上传的文件。最后遍历FileItem的List集合,判断当前FileItem是否为上传的文件,如果是,则获取文件名,创建一个File对象,将上传的文件保存到指定的目录中。 4.文件上传完成后,可以给用户一个提示信息,例如: ```java response.getWriter().write("File uploaded successfully!"); ``` 以上就是使用Apache的commons-fileupload组件实现文件上传的步骤。需要注意的是,文件上传可能会带来安全隐患,因此在处理上传的文件时,需要进行严格的校验和过滤。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值