异常处理try/catch的作用?盼高手解惑! 可以在catch里写你对异常的处理啊一般写的e.printStackTrace();打印出出错的信息,可以很方便的知道哪里出错了,出的什么错我的理解 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 同时希望高手们将自己对java和c++中异常处理的体会贴出来??? 还有就是在有的类里,究竟是catch异常还是在方法的声明中throws Exception而由其调用者处理呢?这两者之间到底有什么不同? catch(Exception e){}...catch(Exception e){}finally{释放资源}没加try...catch...语句处理的代码执行的时候经常会出现500或者400等各种错误,我想我们都不想让用户看到这些500、400错误吧,另外也想知道我们的程序是哪里出错了,出的是什么错误,这就是catch语句的作用,在catch语句里我们可以捕捉我们能预料到的错误,并针对各种错误作出相应的处理,记录到日志,比如:对于NullPonintException,我们就可以捕捉她,然后写一个错误页面(显示中文“空指针错误,请仔细检查”),对于我们不能预料到的也可以统一做处理,总之,就是当这些错误发生时,我们能知道有错误发生,并且处理后给用户看到的是容易接受的页面。finally语句释放资源通常用来释放结果集,连接等等。 我不知道这样到底有什么用?你这样写是把exception打到了控制台上,如果出错可以在控制台去看还有就是在有的类里,究竟是catch异常还是在方法的声明中throws Exception而由其调用者处理呢?看你的错误是想怎么处理,这个得看你得到的是什么错.如果有时候真的是异常而在你的方法里不知道怎么处理的话,可以把这个异常扔出去,让调用者来处理.当然也有不是异常的(如你想检查一个输入的String是否为int型,可以这样做:Integer.pasInt(String);如果这个时候抛出了Exception你可以认为是输入错误,你可以在方法里处理)这两者之间到底有什么不同?上面应该说了我知道有个org.apache.commons.logging,是用来做日志的,能用在catch块中,可这样的真正意义是什么?这个写日志啊,看是否有错,程序运行怎样,方便调试,维护啊. 其实,大家说的我都明白!只是我觉得catch只作调试用就太片面了.effective java里说把异常分三种,当然首先是继承自Throwable,其次有Exception,RuntimeException(继承自Exception),Error!Error我们就不说,这些都是系统不可挽回的错误.至于RuntimeException,是在运行期间出现的错误,比如空指针,我们在代码中也不进行处理,只是尽可能得避免和进行一些参数有效性检查.而Exception,就是一般得异常,这称之为被检查的异常.比如我们在代码中必须进行try/catch的显式处理,同时也可以抛出由更高一级的上下文来处理.现在的问题就是,当我们遇到必须显式处理的异常时,是应该直接由try/catch来处理还是抛出由其调用者(更高一级的上下文)来处理,而这两者之间究竟有何区别?在什么时候选用哪种方法.抑或两者都用?effective java提供的方法是:当用户(调用者)能恢复错误的时候或者希望恢复错误的时候就抛出,其他情况就直接处理(显式try/catch).这里锁说的,"用户(调用者)能恢复错误的时候或者希望恢复错误的时候",很不理解,只要是异常,都是不想看到的,同时我认为也是不能恢复的!比如,读取一个配置文件,必须得到配置文件中的参数才能进行下一步的工作,所以我觉得我应该直接抛出给上层调用者,但是如果直接在catch中return也行呀,但是这样其调用者不能知道究竟程序执行的程度是多少,是怎么没有达到预期效果的(正确执行所能达到的功能)!用户(调用者)能恢复错误的时候或者希望恢复错误的时候,这句话我觉得很难界定其范围!各位高手,能不能从你们的实际开发经验中,告诉我,究竟哪种才是最好的方法???以及你们的看法? 我的理解:比如像NullPointException出现的时候,可以捕捉到,那么我们就可以输出一个错误页中文显示有错误,但是实际上我们并没有从根本上解决问题,那么是什么地方出现了null呢,通过catch...语句的处理只好我们就可以跟踪,找到发生null的地方,然后在这个异常的地方来个if(对象==null){}这样就可以把异常排除掉了,这样也就能把异常去掉;另一种情况就是RunTimeException,这中情况通常情况下我们是没法处理的,那就只好Throws ,然后重定向到一个错误页 楼上说的这个就是我说的应该进行有效性检查尽量避免这样的错误,比如空指针,比如ClassCast等等都是可以规避这些风险的。至于RuntimeException,是在运行期间出现的错误,比如空指针,我们在代码中也不进行处理,只是尽可能得避免和进行一些参数有效性检查.但是我的这个问题:用户(调用者)能恢复错误的时候或者希望恢复错误的时候,这句话我觉得很难界定其范围!各位高手,能不能从你们的实际开发经验中,告诉我,究竟哪种才是最好的方法???以及你们的看法?有高手能说说看法么? 异常里面可以做处理的呀,它也可以实现一定的功能。以前看到一网友就是利用catch这个实现了一个环境的自动选择的功能。在它里面返回是因为其它调用它的地方不管该方法是否正常都可以得到一个结果,可以进行处理。 to: drugon(想换工作,准备跳槽................................) catch里进行环境的自动选择?不太好 吧,等到异常时才进行环境选择,这不相当于用catch来进行条件流程的判断转发,这可是异常处理的大忌呀!其实大家都没有回答到我这个问题,也是我最想问的: 1、当我们遇到必须显式处理的异常时,是应该直接由try/catch来处理还是抛出由其调用者(更高一级的上下文)来处理,而这两者之间究竟有何区别? 2、用户(调用者)能恢复错误的时候或者希望恢复错误的时候,这句话我觉得很难界定其范围! 1111111111111111 java什么方法加错误页面省事? java程序员必看的面试题 3 如何解决The static method~[在线等~] 帮我解决点小问题 <input type="text" name="" value="">中的value最大可提交多大值?详细看贴中描述!在线等 晕~~ js与jsp怎么相互传值? JSP中调用DLL无法取得中文字符即取得的中文为乱码 请问jbuilder7.0会不会比jbuilder6好啊?哪里有下载的? 怎样解决JSP下中文显示乱码问题呢? 怎样可以使发布的内容可以编辑格式阿? jsp中有类似application的东西吗?
这两者之间到底有什么不同?
没加try...catch...语句处理的代码执行的时候经常会出现500或者400等各种错误,我想我们都不想让用户看到这些500、400错误吧,另外也想知道我们的程序是哪里出错了,出的是什么错误,这就是catch语句的作用,在catch语句里我们可以捕捉我们能预料到的错误,并针对各种错误作出相应的处理,记录到日志,比如:对于NullPonintException,我们就可以捕捉她,然后写一个错误页面(显示中文“空指针错误,请仔细检查”),对于我们不能预料到的也可以统一做处理,总之,就是当这些错误发生时,我们能知道有错误发生,并且处理后给用户看到的是容易接受的页面。finally语句释放资源通常用来释放结果集,连接等等。
你这样写是把exception打到了控制台上,如果出错可以在控制台去看还有就是在有的类里,究竟是catch异常还是在方法的声明中throws Exception而由其调用者处理呢?
看你的错误是想怎么处理,这个得看你得到的是什么错.如果有时候真的是异常而在你的方法里不知道怎么处理的话,可以把这个异常扔出去,让调用者来处理.当然也有不是异常的(如你想检查一个输入的String是否为int型,可以这样做:Integer.pasInt(String);如果这个时候抛出了Exception你可以认为是输入错误,你可以在方法里处理)这两者之间到底有什么不同?
上面应该说了我知道有个org.apache.commons.logging,是用来做日志的,能用在catch块中,可这样的真正意义是什么?
这个写日志啊,看是否有错,程序运行怎样,方便调试,维护啊.
只是我觉得catch只作调试用就太片面了.
effective java里说把异常分三种,当然首先是继承自Throwable,其次有Exception,RuntimeException(继承自Exception),Error!
Error我们就不说,这些都是系统不可挽回的错误.
至于RuntimeException,是在运行期间出现的错误,比如空指针,我们在代码中也不进行处理,只是尽可能得避免和进行一些参数有效性检查.
而Exception,就是一般得异常,这称之为被检查的异常.比如我们在代码中必须进行try/catch的显式处理,同时也可以抛出由更高一级的上下文来处理.
现在的问题就是,当我们遇到必须显式处理的异常时,是应该直接由try/catch来处理还是抛出由其调用者(更高一级的上下文)来处理,而这两者之间究竟有何区别?
在什么时候选用哪种方法.抑或两者都用?
effective java提供的方法是:当用户(调用者)能恢复错误的时候或者希望恢复错误的时候就抛出,其他情况就直接处理(显式try/catch).这里锁说的,"用户(调用者)能恢复错误的时候或者希望恢复错误的时候",很不理解,只要是异常,都是不想看到的,同时我认为也是不能恢复的!比如,读取一个配置文件,必须得到配置文件中的参数才能进行下一步的工作,所以我觉得我应该直接抛出给上层调用者,但是如果直接在catch中return也行呀,但是这样其调用者不能知道究竟程序执行的程度是多少,是怎么没有达到预期效果的(正确执行所能达到的功能)!用户(调用者)能恢复错误的时候或者希望恢复错误的时候,这句话我觉得很难界定其范围!
各位高手,能不能从你们的实际开发经验中,告诉我,究竟哪种才是最好的方法???以及你们的看法?
这样就可以把异常排除掉了,这样也就能把异常去掉;另一种情况就是RunTimeException,这中情况通常情况下我们是没法处理的,那就只好Throws ,然后重定向到一个错误页
至于RuntimeException,是在运行期间出现的错误,比如空指针,我们在代码中也不进行处理,只是尽可能得避免和进行一些参数有效性检查.
但是我的这个问题:
用户(调用者)能恢复错误的时候或者希望恢复错误的时候,这句话我觉得很难界定其范围!
各位高手,能不能从你们的实际开发经验中,告诉我,究竟哪种才是最好的方法???以及你们的看法?
有高手能说说看法么?
在它里面返回是因为其它调用它的地方不管该方法是否正常都可以得到一个结果,可以进行处理。
catch里进行环境的自动选择?不太好 吧,等到异常时才进行环境选择,这不相当于用catch来进行条件流程的判断转发,这可是异常处理的大忌呀!其实大家都没有回答到我这个问题,也是我最想问的:
1、当我们遇到必须显式处理的异常时,是应该直接由try/catch来处理还是抛出由其调用者(更高一级的上下文)来处理,而这两者之间究竟有何区别?
2、用户(调用者)能恢复错误的时候或者希望恢复错误的时候,这句话我觉得很难界定其范围!