这个包含close()调用的Final子句的原因是什么?
我正在学习在线Java课程,使用Java的编程简介.. 在I/o章中,以下语句介绍了以下代码: 顺便说一句,在此程序的末尾,您会在try语句中找到我们最终子句的第一个有用示例.当计算机执行try语句时,无论如何,保证执行其最终子句中的命令. 该程序在 11.2.1 的末尾.程序的程序只是从文件中读取一些数字并以相反的顺序写入. 主要方法中的相关代码是(数据是读者,结果是作者): try { // Read numbers from the input file, adding them to the ArrayList. while ( data.eof() == false ) { // Read until end-of-file. double inputNumber = data.getlnDouble(); numbers.add( inputNumber ); }
18 2023-06-06
编程技术问答社区
围绕Invoke和检查异常
我有一个有关涉及注释的问题.假设我有一个带有方法A的bean,它可以通过在某些拦截器中进行注释的方法增强.方法A在签名中没有任何例外,而"增强"方法可以引发一些检查的异常.没有汇编错误,但是当情况发生时,运行时会发生什么(如@aroundinvoke方法中,抛出此检查的异常)吗?它会转换为某个运行时例外吗? 解决方案 Interpector 1.2 interceptor 1.2规格((截至本文的最新情况)并未指定此情况的行为,因此该行为将是特定于产品的.我不建议依靠该行为,除非产品记录该行为,并且您对产品特定的依赖性也可以.我怀疑大多数实施将抛出某种不受限制的例外(最有可能Ejbexception或UndeclaredThrodthrowableException).我知道WebSphere Application Server抛出EJBException. 其他解决方案 拦截器在周围撤离时被标记为投票例外的原因,是因为我们真的不知道被拦截的方法可以抛出什么,无论是检查
54 2023-04-20
编程技术问答社区
在python中捕捉异常/运行时错误
我有一个网络刮擦python脚本,当您运行时,它会要求一个网址.我想发生的是验证用户输入,例如.如果是有效的网址,或者当用户没有输入时.我已经完成了尝试和,除了几乎有效,它显示了我希望用户看到的消息,但它也返回追溯呼叫,我不想要它.我只想显示我的自定义错误消息.谁能帮我实施这个?这是我的代码: import sys, urllib, urllib2 try: url= raw_input('Please input address: ') webpage=urllib.urlopen(url) print 'Web address is valid' except: print 'No input or wrong url format usage: http://wwww.domainname.com ' def wget(webpage): print '[*] Fetching webpage...\n' p
26 2023-04-20
编程技术问答社区
我为什么要扩展java.lang.RuntimeException?
我最近被问到一个问题,显然是在采访中,关于扩展java.lang.runtimeexception. 我被要求引用一个示例,需要扩展java.lang.runtimeexception. 我一直认为我们不需要扩展Runtime Exception,任何人都可以启发我吗? 谢谢, SB 解决方案 一个层的运行时异常是检查另一层(并作用于)异常. 我可以看到容器,例如servlet容器; REPL和/或任何顶级解释器循环;等等.合法选择和捕获Runtime Exceptions,因为它们不应该崩溃,仅仅是因为堆栈中的某些东西更深. 类似于容器外壳,越过邻接边界,例如越过层或层通常需要更明确的异常语义. 如果"原因"和/或消息属性在语义上证明不足以表达"嘿,它破裂"以外的任何内容,并且客户端/高层可以选择性地行动,那么可以说是子类Runtime Exception合法的. 其他解决方案 创建不必明确捕获的异常时,您需要扩展RuntimeExc
34 2023-04-20
编程技术问答社区
在Ruby中替代救援?
似乎我的代码中到处都有begin ... rescue ... end语句!这似乎不是正确的事情. 任何人都可以建议我如何捕获任何例外,而不必将所有内容放在begin ... rescue ... end内?有什么方法可以告诉Ruby闭嘴,即使提出了例外,也要继续前进? 解决方案 与其他语言一样,对于任何非平凡的程序,您实际上需要一个经过深思熟虑的体系结构来处理异常.一种方法是定义项目中的异常处理范围,然后您通常希望在范围边界捕获(救援)例外.有权衡.您在堆栈中越接近发生例外的地方,您就触发它的条件的上下文信息越多.如果您尝试过于细粒度,那么您会遇到所描述的问题.另一方面,如果仅在堆栈顶部捕获异常(在"主"中),则没有上下文.因此,定义异常处理范围涉及评估与您的特定程序或系统有关的权衡. Ruby使我们能够"重试" - 其他某些语言不可用.这应该很少使用!但是在有意义的地方(例如,等待网络或释放资源),需要在本地处理此类例外. 否则,我倾向于在大型项目上定义异常
32 2023-04-20
编程技术问答社区
为什么C++允许抛出任何东西?
我刚刚看到这个问题及其相关答案. 考虑到我以前从未遇到过这种使用throw的方式,我很惊讶地发现这是可能的. 允许(几乎)扔东西的背后的逻辑是什么? 是否可以使用超出异常/错误信号传导的掷出键入语法?如果是这样,那是不良的做法还是我从未意识到的"常见"用法? 解决方案 这很难没有猜测,但是比贾恩(Bjarne)的1998年论文编程语言" 在描述异常处理时使用任意类型,并建议创建上述类型的层次结构,以方便/语义.看来他在一开始就没有牢记exception的"基类". 拥有标准层次结构(基于std::exception)的概念开始是一种"补充",这是一种方便的方式,是一种方便的方式来处理Bjarne建议使用异常,而不是每个人都使用的建筑障碍物例外应为基础.这种当代的做法是从std::exception中得出所有例外,似乎以后出现了. 如今,我想不出一个很好的理由不这样做,如果出于其他原因,使用您的代码除了其他原因可能会期望顶级catch (const std::e
36 2023-04-20
编程技术问答社区
为什么你需要捕捉 "异常",而不捕捉子类 "RuntimeException"?
下图显示"检查"和"未选中"的例外是Exception的子类.我发现您需要捕获Exception,但您不需要捕获直接继承Exception的RuntimeException.有原因是开发人员没有让我们不需要捕捉它们而抛出异常? 更具体地说:为什么您只能忽略RuntimeExceptions,而是孩子?为什么没有介绍CheckedException extends Exception的课程,您只需要抓住它,它是孩子? 令人困惑的一部分是,您可以将所有内容都扔到RuntimeException下面而没有问题,但是当您在层次结构中移至Exception时,您需要在某个时候抓住它.这是令人困惑的,因为"抽象"通常会否则可行.您向上移动的越多,一切都越简单,更多.这里不是这种情况.您向上移动越多,您必须做的越多(例如,到达Exception之后,请尝试/捕获). 解决方案 如果未选中Exception,那么您可以隐式地施放对未检查的例外,这意味着您可以在不抓住它们的情况下丢下检
12 2023-04-20
编程技术问答社区
如何排除语法错误?
我想除了以下代码产生的错误外,我不知道如何. from datetime import datetime try: date = datetime(2009, 12a, 31) except: print "error" 上面的代码未打印"error".那就是我想做的. 编辑:我想检查语法错误的原因,是因为12a是命令行参数. 谢谢. 解决方案 命令行"参数"是字符串.如果您的代码是: datetime(2009, '12a', 31) 它不会产生SyntaxError.它增加了TypeError. 在使用代码之前,首先需要清理所有命令行参数.例如这样: month = '12' try: month = int(month) except ValueError: print('bad argument for month') raise else: if not 1
14 2023-04-20
编程技术问答社区
Java try-finally in try-catch模式
每当我需要在Java中获取资源,然后确保发布资源,在可能会抛出异常的情况下,我都会使用以下模式: try { Resource resource = null; try { resource = new Resource(); // Use resource } finally { if (resource != null) { // release resource } } } catch (Exception ex) { // handle exceptions thrown by the resource usage or closing } 例如,如果我需要数据库连接,并且使用或关闭连接可能会引发异常,请编写以下代码: try { Connection connection = null; try { connection = ... // Get database connectio
40 2023-04-20
编程技术问答社区
重新抛出一个InvocationTargetException目标异常
如何重新启动InvocationTargetException的目标例外.我有一种方法,该方法使用反射来调用我的一个类中的Invoke()方法.但是,如果我的代码中有异常,我不担心InvocationTargetException,只需要目标异常.这是一个示例: public static Object executeViewComponent(String name, Component c, HttpServletRequest request) throws Exception { try { return c.getClass() .getMethod(c.getMetaData().getMethod(), HttpServletRequest.class) .invoke(c, request); } catch (InvocationTargetExcep
40 2023-04-20
编程技术问答社区
捕捉IllegalArgumentException?
我在这里遇到了一些问题.我试图弄清楚如何捕捉违法的exception.对于我的程序,如果用户输入负整数,则该程序应捕获非法符号Exception,并询问用户是否想再次尝试.但是,当抛出异常时,它不会给出该选项.它只是终止.我尝试使用尝试和捕获方法,但对我不起作用.我如何捕获这个特殊的例外以继续运行而不是终止? public static void main(String[] args) throws IllegalArgumentException { String keepGoing = "y"; Scanner scan = new Scanner(System.in); while(keepGoing.equals("y") || keepGoing.equals("Y")) { System.out.println("Enter an integer: "); int val = scan.nextInt();
16 2023-04-20
编程技术问答社区
对于一个无效的文件名,应该抛出哪个异常?
我有一种接受文件名作为参数的方法,所有文件名应以" .csv"结尾.如果不通过.csv结束的文件名,我应该投掷哪个例外? 还是我应该采取其他方法? 解决方案 当 论点的价值不在 定义的允许值范围 通过调用方法. 参数exception 在路径字符串而不是文件类型中验证字符. 路径参数为零长度 字符串,仅包含白色空间或 包含一个或多个无效 字符. IMHO路径验证秋季图表如下: 输入路径为null = 参数nullexception 路径中的无效字符= 参数Exception 文件不存在= filenotfoundexception 文件不是正确的类型= 参数 权限问题= unauthorizedAccessexception 文件系统不支持此 操作= notsupportedexception 系统读取错误= ioexception 如果对您来说不够描述,请创建自己的异常类: public class Inval
20 2023-04-20
编程技术问答社区
如何检查在Java中抛出的是哪种异常类型?
如果操作捕获多个异常,我该如何确定被捕的异常? 此示例应该更有意义: try { int x = doSomething(); } catch (NotAnInt | ParseError e) { if (/* thrown error is NotAnInt */) { // line 5 // printSomething } else { // print something else } } 在第5行上,我如何检查捕获哪个例外? 我尝试了if (e.equals(NotAnInt.class)) {..}但没有运气. 注意:NotAnInt和ParseError是我项目中扩展Exception的类. 解决方案 如果可以,始终使用单独的catch用于单个异常类型的块,则没有任何借口可以做: } catch (NotAnInt e) { // handling for NotAnInt } ca
6 2023-04-20
编程技术问答社区
累积的例外情况
我经常发现有必要验证一组条件,而不是尽早失败(在未满足第一个条件时返回false或抛出异常),而是需要汇总结果并报告单个失败. 我目前要么使用具有自定义条目的列表(基本上是输入的类型和一些信息信息),要么是某种观察者(也只是汇总了失败),但我有一种感觉这应该是一个普遍的问题,应该有一些现有的解决方案. 解决方案 是的,这是一个常见的问题,您的两种方法都很好. 如果适合您的情况,我建议使用javax.validation而不是自定义.这是一个有多个提供商的规格,其中一个是 hibernate-validator Hibernate使用验证项目) 其他解决方案 我认为您不需要复杂的解决方案.当我必须这样做时,我通常只是写类似: List errors=new ArrayList(); ... if (foo
38 2023-04-20
编程技术问答社区
Python 2.7 try and except ValueError
i查询用户输入,预计将通过使用int(raw_input(...)) 是int 但是,当用户未输入整数时,即仅命中返回,我会得到一个值. def inputValue(inputMatrix, rangeRows, rangeCols, defaultValue, playerValue): rowPos = int(raw_input("Please enter the row, 0 indexed.")) colPos = int(raw_input("Please enter the column, 0 indexed.")) while True: #Test if valid row col position and position does not have default value if rangeRows.count(rowPos) == 1 and rangeCols.count(colPos) ==
40 2023-04-20
编程技术问答社区
在C#中,如何在不丢失任何信息的情况下为一个异常添加信息?
我有以下代码: catch(Exception ex) { throw new FatalException("An error occurred while trying to load the XSLT file.", ex); } 不幸的是,这只是吞噬了异常.我可以通过执行以下操作来解决此问题: catch(Exception ex) { throw; } ,但我仍然想在事件记录中包含自定义消息以进行帮助. 如何在不丢失任何信息的情况下将此消息添加到异常中? (堆栈跟踪/调试符号等) 解决方案 如果您只需要在原始异常中添加信息,例如用户可读消息或特定详细信息,这些详细信息对您跟踪错误对您很有用,但这对最终用户没有用,您可以使用异常的 data 这是一个键/值对字典. 我们广泛使用此信息来记录正在执行的报告或正在处理的文件之类的信息,以便操作可以确定错误时确切发生的事情.用户不需要此细节,因为他们直接处理故障原因. 您也可
22 2023-04-20
编程技术问答社区
为什么在方法中抛出一个普通的异常是不好的?
为什么用一种方法抛出一般例外是Java中的不良练习? class Test{ public void ex() throws Exception{ //...some code throwing for eg. IllegalAccesException() } } 解决方案 当您通过方法抛出异常时,通常应该知道它是什么样的例外.如果您提出了一个普遍的异常,而不是特定的异常,则在抓住异常时会放弃异常的特定细节. 例如,float.parsefloat()投掷: 1)NullPoInterException->如果字符串为null 2)NumberFormateXception->如果字符串不包含可拆卸浮子. 如果要抛出一般的"异常",而不是" nullpointerexception"和" numberFormateXception",则无法知道是否由于字符串为null或
24 2023-04-20
编程技术问答社区
C++,在多个块中捕获用户定义的异常
假设以下示例.有从std :: exception派生的类A-C类: #include #include #include class A : public std::exception { std::string a_text; public: A(const std::string & a_text_) : a_text(a_text_) {} virtual ~A() throw() { } }; class B : public A { const std::string b_text; public: B(const std::string &a_text_, const std::string & b_text_) : A(a_text_), b_text(b_text_) {} virtual ~B() throw() {} }; template class
38 2023-04-20
编程技术问答社区
Python 3为处理异常而抛出错误
我上周开始学习Python,但我无法在这里遇到问题: def add(x,y): """Adds 2 numbers and returns the result""" return x+y def sub(x,y): """Subtracts 2 numbers and returns the result""" return x-y a = int(input("Enter first number")) b = int(input("Enter second number")) c = int(input("Enter 1 for subtraction , 2 for addition and 3 for both")) try: if c>3: raise ValueError() except ValueError(): print ("Wrong choice") else: print (
14 2023-04-20
编程技术问答社区
Flask和sys.excepthook
我想在烧瓶WebProject中添加全局异常处理对象.在创建应用程序类的主模块中,我添加了代码替代sys.excepthook.这是简单的测试代码: import sys def my_exception_hook(exception_type, value, traceback): print "My exception handler" print " Exception type:", exception_type print " Exception instance:", value print " Traceback:", traceback sys.__excepthook__(exception_type, value, traceback) sys.excepthook = my_exception_hook from flask import Flask import requests app = Flask
38 2023-04-20
编程技术问答社区