mysql下标越界_【3-12】Exception异常类经典应用的场景

Hello,大家好,我是大家最亲爱的siki老师,今天起每天都会在这里为大家带来一个Java语法中有趣的知识点,Q群175158287,欢迎同大家多多交流哈!

今天给大家带来的是Java中的异常处理

首先我们要明白为什么需要异常处理?

异常是导致程序中断执行的一种指令流。如果不对异常进行正确的处理,则可能导致程序的中断执行,造成不必要的损失,所以

在程序的设计中必须要考虑各种异常的发生,并正确的做好相应的处理,这样才能保证程序的正常执行。

一旦产生异常,异常之后的语句并不会被执行,而是直接结束程序,并将错误报告给客户了。

其次要了解异常的基本处理格式try—catch。try中捕获异常,catch中处理对应的异常。

try中捕获异常,出现异常之后的代码将不再被执行,而是跳转到相应的catch语句中执行,用于处理异常。

对于异常,也可以设置其统一的出口,使用fially完成。

try{

// 程序代码

}catch(异常类型1 异常的变量名1){

// 程序代码

}catch(异常类型2 异常的变量名2){

// 程序代码

}finally{

// 程序代码

}

了解异常处理基本结构,接下来便随着老师一起了解下Java的异常处理中经典案例吧

一、算数异常

当算术出现/0时的算术错误时会抛出java.lang.ArithmeticException异常

输出:

Exception in thread "main" java.lang.ArithmeticException: / by zero

at Cynical_Gary.Gary_Text.main(Gary_Text.java:13)

-1.0/0 = -Infinity

+1.0/0 = Infinity

抛出异常:/ by zero

二、数组下标越界异常

当使用数组超出定义数组下标时会抛出java.lang.StringIndexOutOfBoundsException异常

输出:

array[0]6

array[1]6

array[2]6

array[3]6

array[4]6

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 5

at Cynical_Gary.Gary_Text.main(Gary_Text.java:11)

三、空指针异常

当使用到空指针时抛出java.lang.NullPointerException异常

输出:

Exception in thread "main" java.lang.NullPointerException

at Cynical_Gary.Gary_Text.main(Gary_Text.java:7)

四、缺少类的异常

当未找到MySQL驱动程序时抛出java.lang.ClassNotFoundException异常

输出:

java.lang.ClassNotFoundException: com.mysql.jdbc.Driver

五、非法访问异常

当反射获得私有域中与 "hash"相匹配的 int 值时抛出java.lang.IllegalAccessException异常

输出:

java.lang.IllegalAccessException: Class Cynical_Gary.Gary_Text can not access a member of class java.lang.String with modifiers "private final"

at sun.reflect.Reflection.ensureMemberAccess(Unknown Source)

at java.lang.reflect.AccessibleObject.slowCheckMemberAccess(Unknown Source)

at java.lang.reflect.AccessibleObject.checkAccess(Unknown Source)

at java.lang.reflect.Field.getInt(Unknown Source)

at Cynical_Gary.Gary_Text.main(Gary_Text.java:12)

六、文件无法发现异常

当使用File类未找到本地文件时抛出java.io.FileNotFoundException异常

输出:

java.io.FileNotFoundException: d\kira.txt (系统找不到指定的路径。)

at java.io.FileInputStream.open0(Native Method)

at java.io.FileInputStream.open(Unknown Source)

at java.io.FileInputStream.(Unknown Source)

at Cynical_Gary.Gary_Text.main(Gary_Text.java:14)

Exception in thread "main" java.lang.NullPointerException

at Cynical_Gary.Gary_Text.main(Gary_Text.java:19)

七、数据库操作异常

当未成功链接数据库时抛出java.lang.ClassNotFoundException异常

输出:

java.lang.ClassNotFoundException: com.mysql.jdbc.Driver

at java.net.URLClassLoader.findClass(Unknown Source)

at java.lang.ClassLoader.loadClass(Unknown Source)

at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)

at java.lang.ClassLoader.loadClass(Unknown Source)

at java.lang.Class.forName0(Native Method)

at java.lang.Class.forName(Unknown Source)

at Cynical_Gary.Gary_Text.main(Gary_Text.java:16)

Exception in thread "main" java.lang.NullPointerException

at Cynical_Gary.Gary_Text.main(Gary_Text.java:24)

这里需要将MySQL数据库驱动包配置到构建路径中,否则将不能抛出SQLException异常,而是抛出ClassNotFoundException异常

八、方法中抛出异常

自定义方法异常类未实现时,抛出java.lang.UnsupportedOperationException异常

输出:

Exception in thread "main" java.lang.UnsupportedOperationException: 此方法尚未实现

at Cynical_Gary.Gary_Text.throwException(Gary_Text.java:6)

at Cynical_Gary.Gary_Text.main(Gary_Text.java:9)

九、方法上抛出异常

不使用try/catch代码块在方法上抛出java.lang.ClassNotFoundException异常

输出

java.lang.ClassNotFoundException: com.mysql.jdbc.Driver

at java.net.URLClassLoader.findClass(Unknown Source)

at java.lang.ClassLoader.loadClass(Unknown Source)

at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)

at java.lang.ClassLoader.loadClass(Unknown Source)

at java.lang.Class.forName0(Native Method)

at java.lang.Class.forName(Unknown Source)

at CynicalGary.Gary_Text.throwsException(Gary_Text.java:5)

at CynicalGary.Gary_Text.main(Gary_Text.java:10)

注意点:捕获单个异常,Java中捕获异常是通过try...catch...dinally语句来完成的,其中try语句块是必须的,catch和finally语句块可以选择一个或两个。try语句块用来放置可能出现问题的语句,catch语句块用来放置异常后执行的代码,finally语句块用来放置无论是否发送异常都需要执行的代码

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值