相关疑难解决方法(0)

使用Exception.Data

你是如何使用你曾经使用的C#项目中的Exception.Data属性的?

我想要一些建议模式的答案,而不是那些非常适合您的应用的模式.

c# exception

42
推荐指数
4
解决办法
1万
查看次数

什么时候可以捕获OutOfMemoryException以及如何处理它?

昨天我参加了关于SO专门讨论OutOfMemoryException以及处理它的优缺点的讨论(C#try {} catch {}).

我处理它的专业人士是:

  • 抛出OutOfMemoryException这一事实通常不意味着程序的状态已损坏;
  • 根据文档"下面的Microsoft中间(MSIL)指令抛出OutOfMemoryException:box,newarr,newobj"这只是(通常)意味着CLR试图找到给定大小的内存块并且无法做到这一点; 它意味着没有单字节留在我们的性格;

但并非所有人都同意这一点,并推测在此异常之后未知的程序状态以及无法做一些有用的事情,因为它需要更多的内存.

因此我的问题是:没有处理OutOfMemoryException并在发生时立即放弃的严重原因是什么?

编辑:你认为OOME和ExecutionEngineException一样致命吗?

.net c#

36
推荐指数
7
解决办法
2万
查看次数

包含多个异常的自定义异常:鼓励与否?

我正在编写将用于访问数据库的Java库.我向最终程序员抛出异常,他们使用JAR库以他/她想要的方式处理它.

我编写了一个自定义异常(下面提供)来将特定于连接的异常包装在一起,这样最终程序员就不必在代码中捕获所有这些异常.(为了方便他)

在编写Java库时,这是一个很好的做法吗?通过使用它,用户只需要在他的代码中捕获NConnectionException.

public class NConnectionException extends Exception {
private static final Logger logger = LoggerFactory.getLogger(NConnectionException.class);
public NConnectionException(Exception e) {

    if (e instanceof NullPointerException) {
        logger.error("ERROR IN READING DF");
        e.printStackTrace();
    }

    else if (e instanceof FileNotFoundException) {
        logger.error("FILE NOT FOUND");
        e.printStackTrace();

    } else if (e instanceof ParserConfigurationException)
    {
        logger.error("PARSE CONF ERR");
        e.printStackTrace();

    }
    else if (e instanceof org.xml.sax.SAXException)
    {
        logger.error("SAX ERR");
        e.printStackTrace();

    }
    else if (e instanceof IOException)
    {
        logger.error("IO ERR");
        e.printStackTrace();

    }

}
Run Code Online (Sandbox Code Playgroud)

}

java exception-handling jar checked-exceptions

7
推荐指数
1
解决办法
9259
查看次数

Java接口不会声明任何异常.如何管理已实施的已检查异常?

假设我有以下可能无法修改的Java接口:

public interface MyInterface {
  public void doSomething();
}
Run Code Online (Sandbox Code Playgroud)

现在实现它的类是这样的:

class MyImplementation implements MyInterface {
  public void doSomething() {
    try {
      // read file
    } catch (IOException e) {
      // what to do?
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

我无法从不读取文件中恢复.

一个子类RuntimeException可以明显帮助我,但我不确定这是否是正确的做法:问题是该异常将不会在类中记录,并且该类的用户可能会得到该异常解决这个问题.

我能做什么?


我们都同意:接口有问题.

我选择的解决方案

我最终决定编写一个MyVeryOwnInterface扩展MyInterface并添加作为错误方法签名的一部分MyRuntimeException:

public interface MyVeryOwnInterface extends MyInterface {
  public void doSomething() throws MyRuntimeException;
}
class MyImplementation implements MyVeryOwnInterface {
  public void doSomething() throws MyRuntimeException {
    try {
      // read file …
Run Code Online (Sandbox Code Playgroud)

java exception-handling interface

5
推荐指数
1
解决办法
3275
查看次数