java异常处理
2020-02-09 19:25 默默不语 阅读(149) 评论(0) 编辑 收藏 举报今天学习了一些新的java基础知识,方便使用,在此分享给大家!
1.java for循环
在JDK5.0中新增了一个增强的for循环语法:
for(type element:array){ System.out.println(element); }
示例代码:
public static void main(String[] args) { int[] arr = {1, 3, 44, 5, 7, 5, 1, 10, 12}; for(int element : arr) { System.out.print(element + " "); } }
运行结果:
特点:
•使用简单方便。
•遍历数组或集合时无法访问索引(下标)值 。
•只能遍历显示数组或集合中元素的内容,不能修改内容。
2.java可变参数
JDK5.0中新增了可发参数,定义方法时,如果传入到方法中的参数的个数不固定时,我们可以使用可变参数来解决。
示例代码:
//计算传入n个参数的和 //语法:参数类型... 形参名 public static double add(double... nums){ double result = 0.0;//用于存储计算结果 System.out.println(nums.getClass().isArray()); for (double d : nums) { result += d; } //返回计算结果 return result; } public static void main(String[] args) { System.out.println("四个参数:"+add(2.0, 3.0, 4.0, 5.0)); System.out.println("三个参数:"+add(3.0, 4.0, 5.0)); }
注意:在使用时,将可变参数视为数组,且可变参数必须放在参数列表的最后一个
运行结果:
今日用到了java的异常处理,但是之前学习时并没有学懂,所以今天又找了视频来学习了一遍,对一些知识点进行了总结。
首先,异常是程序在运行期发生的不正常的事件,它会打断指令的正常执行流程,也就是我们经常看到程序运行期间会报错。而设计良好的程序应该在异常发生时提供处理这些不正常事件的方法,使程序不会因为异常的发生而阻断或产生不可预见的结果,从而能够继续运行下去。
java中异常分类如下:
Java程序运行过程中所发生的异常事件从严重性可分为两类:
①错误(Error):JVM系统内部错误或资源耗尽等严重情况-属于JVM需要负担的 责任 ,这一类异常事件无法恢复或者不可能捕获,将导致应用程序中断。
②异常(Exception):因为编程失误或偶然的外在因素导致的一般性问题。这类异常如果能得到恰当的处理程序就有机会恢复至正常运行状况。
我们只能处理异常,无法控制错误。
我们先来看一个简单的例子:
public static void main(String[] args) { String [] friends= {"lisa", "bily", "kessy"}; for(int i = 0; i < 5; i++) { System.out.println(friends[i]); } System.out.println("程序结束"); }
运行结果:
我们可以看到报错:数组越界,因为frieds数组长度为3,在循环中却会出现friends[3],friends[4],所以程序终止。如果我们想要在程序发生错误时让它依然继续运行下去就要用到异常处理。我们改一下代码:
public static void main(String[] args) { String [] friends= {"lisa", "doo", "mike"}; try { for(int i = 0; i < 5; i++) { System.out.println(friends[i]); } }catch(ArrayIndexOutOfBoundsException e{//ArrayIndexOutOfBoundsException:数组越界异常 System.out.println("数组越界!"); } System.out.println("程序结束"); }
运行结果:
try代码段包含的是可能产生异常的代码。
catch代码段为异常如何处理,try代码段后可以跟一个或多个catch代码段,或跟 一个finally代码段,每个catch代码段只声明一种其能处理的特定类型的异常,并提供处理的方法。当异常发生时,程序会中止当前的流程去执行相应的catch代码段。
finally代码段无论是否发生异常都会执行。通常在finally语句块中可以迚行资源的清理工作,如:关闭打开的文件、删除临时文件 、关闭数据库的连接等。finally代码段可加可不加。
除了使用try catch字段,我们还可以使用throw关键字,throw关键字用在方法代码中主动抛出一个异常。如果方法代码中自行抛出的异常是受检异常,则这个方法要用throws关键字先声明这个异常。 throws用来声明一个方法可能会抛出的所有异常,跟在方法名的后面。如果一个方法声明的是受检异常,则在调用这个方法之处必须处置这个异常。
代码示例:
public String[] createArray(int length) throws Exception { if (length < 0) { throw new Exception("数组长度小于0,不合法"); } else { return new String[length]; } } public static void main(String[] args) throws Exception { String[] a = createArray(-1); }
运行结果:
这样就会抛出我们写的报错信息啦!
很多时候,我们需要自己定义异常来处理程序中发生的异常,下面介绍如何自定义异常。
代码示例:
//自定义异常,继承自Exception 或其子类 public class MyException extends Exception{ public MyException() { super(); } public MyException(String msg) {//传入报错信息 super(msg); } public MyException(Throwable cause) { super(cause); } public MyException(String msg, Throwable cause) { super(msg, cause); } }
public static String[] createArray(int length) throws Exception { if (length < 0) { throw new MyException("使用自定义异常类,报错信息:数组长度小于0,不合法"); } else { return new String[length]; } } public static void main(String[] args) throws Exception { String[] a = createArray(-1); }
运行结果: