黑马程序员技术交流社区
标题:
异常处理?
[打印本页]
作者:
李柯
时间:
2012-4-15 13:28
标题:
异常处理?
Exception和RuntimeException都是异常为什么一个需要try catch,而一个不需要?
它们在使用的时候区别在哪?
作者:
尹博
时间:
2012-4-15 13:50
http://bbs.itheima.com/forum.php ... amp;page=1#pid64727
作者:
刘占月
时间:
2012-4-15 13:54
因为RuntimeException 是Exception个比较特殊的子类对象。
RuntimeException 如果在函数内部抛出该异常,函数上不用声明,编译一样通过。
如果函数上声明了该异常,那么在函数内部不抛出该异常,编译一样通过。
这就是RuntimeException 的特别之处。
作者:
蒋亮
时间:
2012-4-15 14:13
RuntimeException是Exception的子类,主要区别在于:
Java编译器要求函数必须声明抛弃可能发生的Exception,但并不要求必须声明抛弃未被捕获的RuntimeException.
作者:
朱鹏举
时间:
2012-4-15 14:27
RuntimeException,也就是运行时异常,表示你的代码本身存在BUG,你去try-catch的就毫无意义,这就需要你去修改代码。Exception是RuntimeException的父类,除RuntimeException外,他的其他子类都可以try-catch.
作者:
小鹿叙鹿
时间:
2012-4-15 23:15
一、PreparedStatement的预编译机制,使其与Statement有着显著的区别
(1)PrepareStatement语句,在经过编译器编译后,被缓存下来,下次调用相同的预编译语句时,就不需要再次编译,只要将参数直接传入编译过的语句执行代码中就能够执行。这并是说只有一个Connection中多次执行的预编译语句被缓存,而是对于整个DB中,只要预编译的语句语法和缓存中匹配,那么在任何时候都可以不需要再次编译而直接执行。
(2)PreparedStatement提高了安全性
Statement语句不安全的 简单示例:String sql = "select * from tb where name='"+appName+'"";利用appName参数值的输入,来生成恶意的sql语句,如:将[' or '1'='1']传入进来,就将句子的原意完全转变。
PreparedStatement的预编译机制使你传入的任何内容不会和原来的语句发生任何匹配的关系,这样,你可以对传入数据的过滤省心许多。
二、PreparedStatement可以比较好地解决系统的本地化问题。
譬如,在一个原始的英语系统上装好了sqlserver,那么它缺省的字符集是ANSI的Latin字符集;现在我们要将此系统作中文系统用,装好各种语言包,设置好location等等,我们期望用java写的application能够正常显示中文;但是,如果我们使用Statement往sqlserver里面插入中文得到将是编码丢失的问号等;这是因为更改设置以后,我们的字符集是gb2312,而sqlserver字符集没有变,中文串插入数据库中导致什么呢? latin字符集显然只有gb2312的一部分字符,如此导致编码丢失,无法正常显示。
三、谈谈PreparedStatement的缺点
在执行SQL语句出错的时候,我们没有办法看到完整的SQL语句,甚至看不到设置的参数,这样,对调试带来的不便性。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2