有些异常不可能抛出,但还是要用throws声明?怎么办? 如果外边不处理就try catch,如果外边统一处理就throws ,再说如果函数强制捕获异常的话,你只能这2种选一种,你以为你写死就不会有问题,是不行,即使你写的是对的,也可能出现网络连不通等原因,导致程序出异常 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 项目里面自定义一个AppException,每次就抛出这个异常。统一管理。 需要上层程序调用就把错误往上抛,只是做个一个简单的url就try catch自行处理吧。 如果我要下载,可能抛出SocketTimeoutException之类的。但我现在考虑的是MalformatedException。请问我应该声明MalformatedException,还是在本级处理? 请问在这两种情况下你会如何设计?1.void downloadPage(){ URL url=new URL("http://www.google.com"); do(url);}2.void downloadPage(String urlString){ URL url=new URL(urlString); do(url);} 如果上一层没做处理异常的,就在这层用try catch然后什么都不写 请问在这两种情况下你会如何设计?1.void downloadPage(){ URL url=new URL("http://www.google.com"); do(url);}2.void downloadPage(String urlString){ URL url=new URL(urlString); do(url);}对异常的处理方式与你给URL传参数还是常数没有关系,你传一个合法的URL常数,也有可能抛异常的啊。比如网络不同,对方url服务器故障等等很多原因都可能导致异常。主要看上级调用函数需不需要知道这个异常,如果需要知道,那就应该往上抛,如果不需要,那就可以直接在这里处理。 你说“不可能抛出”,也就是说,“如果抛出,那就是严重的程序bug”,所以 try - catch 然后在 catch 块中 log,封装成合适的类型的 RuntimeException 抛出。这件事说明 URL 的构造方法,以及 MalformatedException 都是很糟糕的设计。见我之前发的帖子: http://bbs.csdn.net/topics/390640865“如果你发现自己在代码中频繁的 catch 一个检查异常,然后转换抛出一个非检查异常,那这个检查异常的设计多半有问题。” 楼主,这么说吧,如果你讲异常声明出去,就是告诉将由jvm来处理,但是如果你用try,就表示,当前这个异常有你自己处理就好比,这个问题你没解决,你丢给你组长,你组长也没解决,你组长有丢给项目经理一样,但是最后还得有个人来解决的对吧,所以看这个问题在你这里解决还是丢出去。 请问在这两种情况下你会如何设计?1.void downloadPage(){ URL url=new URL("http://www.google.com"); do(url);}2.void downloadPage(String urlString){ URL url=new URL(urlString); do(url);}对异常的处理方式与你给URL传参数还是常数没有关系,你传一个合法的URL常数,也有可能抛异常的啊。比如网络不同,对方url服务器故障等等很多原因都可能导致异常。主要看上级调用函数需不需要知道这个异常,如果需要知道,那就应该往上抛,如果不需要,那就可以直接在这里处理。原来是这样啊!我仅仅是构造一个url对象,你就断言这个new的操作会因为对方服务器问题而失败?那好,我new URL("http://www.fakeyou.me")。我刚刚试了下并不存在这个网站,所以java会在调用这个构造函数的时候抛出异常?我没告诉你我用这个url对象干什么,如果仅仅想要把它打印到屏幕上,也会在构造这个url对象的时候抛出异常? 1、不管你的代码对不对,都要写异常的。2、不管是throws ...Exception,还是try...都要对异常进行出来。只不过throws...Excetion是将异常处理放在外面,即由调用这个方法时,进行异常处理,最终都得写成try... 单例模式? java 字符小问 接口是不是一个类(要详细说明) 如何使用代码将本地的html文件转换为图片格式 关于存储过程的迷惑 javax.swing.*!!!!!表嫌分少啊大侠!!!!!! for循环的不同写法是否有性能性能差异? socket接收连续xml数据解决办法 急!!怎样产生0--3之间的随机整数? 為仕麼我用JET生成的.exe可執行文件在其它機器上運行時候總是彈出找不到DLL文檔. 怎样通过流把byte[]转换为long输出出来? 求助java语法
请问在这两种情况下你会如何设计?1.
void downloadPage()
{
URL url=new URL("http://www.google.com");
do(url);
}2.
void downloadPage(String urlString)
{
URL url=new URL(urlString);
do(url);
}
请问在这两种情况下你会如何设计?1.
void downloadPage()
{
URL url=new URL("http://www.google.com");
do(url);
}2.
void downloadPage(String urlString)
{
URL url=new URL(urlString);
do(url);
}
对异常的处理方式与你给URL传参数还是常数没有关系,你传一个合法的URL常数,也有可能抛异常的啊。比如网络不同,对方url服务器故障等等很多原因都可能导致异常。主要看上级调用函数需不需要知道这个异常,如果需要知道,那就应该往上抛,如果不需要,那就可以直接在这里处理。
所以 try - catch 然后在 catch 块中 log,封装成合适的类型的 RuntimeException 抛出。这件事说明 URL 的构造方法,以及 MalformatedException 都是很糟糕的设计。见我之前发的帖子: http://bbs.csdn.net/topics/390640865
“如果你发现自己在代码中频繁的 catch 一个检查异常,然后转换抛出一个非检查异常,那这个检查异常的设计多半有问题。”
楼主,这么说吧,如果你讲异常声明出去,就是告诉将由jvm来处理,但是如果你用try,就表示,当前这个异常有你自己处理就好比,这个问题你没解决,你丢给你组长,你组长也没解决,你组长有丢给项目经理一样,但是最后还得有个人来解决的对吧,所以看这个问题在你这里解决还是丢出去。
请问在这两种情况下你会如何设计?1.
void downloadPage()
{
URL url=new URL("http://www.google.com");
do(url);
}2.
void downloadPage(String urlString)
{
URL url=new URL(urlString);
do(url);
}
对异常的处理方式与你给URL传参数还是常数没有关系,你传一个合法的URL常数,也有可能抛异常的啊。比如网络不同,对方url服务器故障等等很多原因都可能导致异常。主要看上级调用函数需不需要知道这个异常,如果需要知道,那就应该往上抛,如果不需要,那就可以直接在这里处理。
原来是这样啊!我仅仅是构造一个url对象,你就断言这个new的操作会因为对方服务器问题而失败?那好,我new URL("http://www.fakeyou.me")。我刚刚试了下并不存在这个网站,所以java会在调用这个构造函数的时候抛出异常?我没告诉你我用这个url对象干什么,如果仅仅想要把它打印到屏幕上,也会在构造这个url对象的时候抛出异常?
2、不管是throws ...Exception,还是try...都要对异常进行出来。
只不过throws...Excetion是将异常处理放在外面,即由调用这个方法时,进行异常处理,最终都得写成try...