如何在扩展Exception的类中获取上下文

时间:2012-10-23 13:31:12

标签: android exception android-context

我尝试了一切,这个 Using Application context everywhere? 几乎没有什么东西可行。

我需要在我的DatabaseException类中使用应用程序上下文来扩展Exception。 我需要它,因为我想在启动异常时检查一些sharedpreferences。 代码基本上是这样的:

public class DatabaseException extends Exception {

private static final long serialVersionUID = 1L;

DatabaseException(){
    super();
}

DatabaseException(String s){
    super(s);
}

public DatabaseException (String s, Throwable t){
    super (s,t);
    kindOfException(t.getCause(), s);
}

DatabaseException (Throwable t){
    super (t);
    kindOfException(t.getCause(), null);
}

...

private void createLog() {
    Log.d("Database Exception","On Create Log");
    String listLogs;
    SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(DatabaseException.class.context);

当然这不起作用。那么......拜托,有人可以帮帮我吗?

3 个答案:

答案 0 :(得分:1)

public class DatabaseException extends Exception {

private static final long serialVersionUID = 1L;

public YourContext context;
public DatabaseException(YourContext context){
    this.context = context;
}
}

现在,如果你发现异常:

try {
    ...
} (catch DatabaseException e) {
    MyContext context = e.context;
}

答案 1 :(得分:0)

很简单......你做不到。但是当Execption被提升时,您可以执行

private void createLog() {
    this.getContext();
    Log.d("Database Exception","On Create Log");
    String listLogs;
    SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(DatabaseException..
}

catch子句中需要的操作。

你可以把它作为参数传递但是,请避免它。

答案 2 :(得分:0)

快速回答:
1.添加应用程序上下文作为DatabaseException构造器的参数。
2.将DatabaseException作为其他类的内部类。 (其他类意味着Activity ...),因此您可以在内部类中使用外部类的字段/方法 3. ...