Articles of exception

ClassNotFoundException dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:61)

Stackoverflow上出现了几次这个错误,我将在这个问题中引用其他问题。 我的项目是使用Android Maven插件的Android应用程序,包括库,但也包括一些本地库,因为它们不是通过maven提供的。 我的IDE是Eclipse。 我主要使用本教程来配置它。 我对maven很新。 简而言之,我无法在手机上启动应用程序。 启动它时,我会看到上面写的有关Activity的错误,这是我的启动Activity,名为SubscriptionView 。 整个错误跟踪如下: 07-17 15:47:42.170: E/AndroidRuntime(20071): FATAL EXCEPTION: main 07-17 15:47:42.170: E/AndroidRuntime(20071): java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.example.dynamixsspbridge/com.example.dynamixsspbridge.SubscriptionView}: java.lang.ClassNotFoundException: com.example.dynamixsspbridge.SubscriptionView 07-17 15:47:42.170: E/AndroidRuntime(20071): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2034) 07-17 15:47:42.170: E/AndroidRuntime(20071): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2135) 07-17 15:47:42.170: E/AndroidRuntime(20071): at android.app.ActivityThread.access$700(ActivityThread.java:140) 07-17 15:47:42.170: E/AndroidRuntime(20071): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1237) 07-17 15:47:42.170: E/AndroidRuntime(20071): at android.os.Handler.dispatchMessage(Handler.java:99) 07-17 15:47:42.170: E/AndroidRuntime(20071): […]

抛出exception处理中的子句

我已经阅读了数百篇有关此事的post,但我仍不清楚这一点。 当我写这样的function public List getTrackIds(int limit) throws NotConnectedException, UnauthorizedException { … } 这意味着该函数可以抛出这些exception。 但是不是需要在try / catch块中捕获它吗? 在这种情况下,我将如何捕获exception? 。 当我尝试调用此函数时,则必须在调用函数中编写try / catch块或写入throws子句。 再次,如果我不编写try / catch块,我将如何捕获这些exception?

Canvas.clipPath上的Android UnsupportedOperationException

我在我的项目中使用来自https://github.com/lvillani/android-cropimage的图像裁剪库来裁剪存储在设备上的图像。 但是,某些用户使用以下堆栈跟踪报告崩溃 java.lang.UnsupportedOperationException at android.view.GLES20Canvas.clipPath(GLES20Canvas.java:413) at com.android.camera.HighlightView.draw(HighlightView.java:101) at com.android.camera.CropImageView.onDraw(CropImage.java:783) at android.view.View.draw(View.java:11006) at android.view.View.getDisplayList(View.java:10445) at android.view.ViewGroup.drawChild(ViewGroup.java:2850) at android.view.ViewGroup.dispatchDraw(ViewGroup.java:2489) at android.view.View.getDisplayList(View.java:10443) at android.view.ViewGroup.drawChild(ViewGroup.java:2850) at android.view.ViewGroup.dispatchDraw(ViewGroup.java:2489) at android.view.View.getDisplayList(View.java:10443) at android.view.ViewGroup.drawChild(ViewGroup.java:2850) at android.view.ViewGroup.dispatchDraw(ViewGroup.java:2489) at android.view.View.getDisplayList(View.java:10443) at android.view.ViewGroup.drawChild(ViewGroup.java:2850) at android.view.ViewGroup.dispatchDraw(ViewGroup.java:2489) at android.view.View.getDisplayList(View.java:10443) at android.view.ViewGroup.drawChild(ViewGroup.java:2850) at android.view.ViewGroup.dispatchDraw(ViewGroup.java:2489) at android.view.View.draw(View.java:11009) at android.widget.FrameLayout.draw(FrameLayout.java:450) at com.android.internal.policy.impl.PhoneWindow$DecorView.draw(PhoneWindow.java:2154) at android.view.View.getDisplayList(View.java:10445) at android.view.HardwareRenderer$GlRenderer.draw(HardwareRenderer.java:853) at android.view.ViewRootImpl.draw(ViewRootImpl.java:1961) at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1679) […]

如何防止Android应用程序因后台线程中的exception而崩溃?

这是一个普遍的问题,从具体情况中提出,但我想得到一般答案如何处理以下情况: 背景: 我有一个应用程序,它正在使用一些第三方库(广告网络提供商SDK – 特别是 – AdMob SDK,基于Google Play Services )。 该库的function对于应用程序并不重要。 该库创建一个或多个后台工作线程。 有时(非常罕见的情况),其中一个后台线程中存在未处理的exception,导致应用程序崩溃。 我想忽略由此库引起的所有exception,无论其原因如何:在最坏的情况下,应用程序用户将看不到广告 – 它比应用程序崩溃要好得多。 由于库本身创建了后台线程 – 我不能通过try / catch包装它们。 题 有没有办法捕获所有非处理后台(非主要)线程exception,只是为了在这种情况下杀死线程,并防止应用程序崩溃? 相关问题 我看到了很多问题,但是其中一些问题太具体了(并没有涵盖我的情况),其他问题则指的是当开发人员控制线程创建并且能够使用try / catch包装整个线程时。 如果我仍然错过相关问题,涵盖此案例,我将很感激这个链接

使用AsyncTask

抱歉,如果这是一个简单的问题,但我对此非常陌生并仍在学习。 我有一个应用程序,当我的用户点击按钮登录后输入他们的详细信息,它崩溃与android.os.NetworkOnMainThreadException我发现这是因为我在主线程上执行网络操作,并解决我需要使用AsyncTask,我被语法困住了。 单击按钮后,这是我的代码,调用函数进行连接,然后将json解析为sqlite db。 // Login button Click Event btnLogin.setOnClickListener(new View.OnClickListener() { public void onClick(View view) { String email = inputEmail.getText().toString(); String password = inputPassword.getText().toString(); UserFunctions userFunction = new UserFunctions(); JSONObject json = userFunction.loginUser(email, password); // check for login response try { if (json.getString(KEY_SUCCESS) != null) { loginErrorMsg.setText(“”); String res = json.getString(KEY_SUCCESS); if(Integer.parseInt(res) == 1){ […]

Android Log.X不打印stacktrace

e.printStackTrace()工作正常(即将我的堆栈跟踪打印到stderr)但Log.X根本无法打印堆栈跟踪。 例如: } catch (IOException e) { Log.e(“Network”, “Exception”, e); e.printStackTrace(); } 输出: 08-31 03:46:21.992: W/Network(13238): Exception 08-31 03:46:22.092: W/System.err(13238): java.net.UnknownHostException: Unable to resolve host “…”: No address associated with hostname 08-31 03:46:22.204: W/System.err(13238): at java.net.InetAddress.lookupHostByName(InetAddress.java:394) 08-31 03:46:22.222: W/System.err(13238): at java.net.InetAddress.getAllByNameImpl(InetAddress.java:236) 08-31 03:46:22.222: W/System.err(13238): at java.net.InetAddress.getAllByName(InetAddress.java:214)

使用“setUncaughtExceptionHandler”和“Toast”进行全局exception处理

我正在尝试创建一个简单的exception处理程序,它将帮助我调试应用程序。 现在,当我遇到exception时,我被迫连接Eclipse调试器只是为了查看exception细节。 为了避免这种情况,我使用了setUncaughtExceptionHandler来处理任何未处理的exception并在exception上显示Toast。 不幸的是,这不起作用。 public class TicTacToe extends Activity { /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); Thread.currentThread().setUncaughtExceptionHandler(new UncaughtExceptionHandler() { @Override public void uncaughtException(Thread thread, Throwable ex) { Toast.makeText(TicTacToe.this, “TOAST”, Toast.LENGTH_LONG).show(); } }); setContentView(R.layout.main); Button continueButton = (Button) findViewById(R.id.cell01); continueButton.setOnClickListener(new OnClickListener() { @Override public void onClick(View […]

Android,处理SQLiteConstraintException

我在Android中有这个方法: public void insertarTitulo(String _id, String title, String url){ ContentValues cv = new ContentValues(); cv.put(“_id”, _id); cv.put(“title”, title); cv.put(“URL”, url); try{ getWritableDatabase().insert(“book”, “book”, cv); }catch(SQLiteConstraintException e){ Log.e(MyActivity.LOGTAG, “This code doesn’t show”); } close(); } 标题值是唯一的,所以当我插入重复值时会抛出Constraint错误,到目前为止这是正确的。 一切都按预期工作。 但我不能使捕获代码工作。

SQLiteexception:数据库已锁定问题

我在Android应用程序中遇到了SQLite数据库的问题。 它似乎经常发生,我无法重现它,但这是Android Market提供的报告。 基本上我首先有一个启animation面活动,首先检查所有需要的数据是否在数据库中。 如果没有,它将在异步线程中安装数据并关闭数据库连接。 然后,只有这样才能启动主要活动,这也会打开并读取/写入数据库。 此代码从启动屏幕活动的onCreate方法执行: dbWord = new WordDBAdapter(this, myUI); dbWord.open(); if (dbWord.isDataInstalled()) { dbWord.close(); databaseInstalled = true; clickToStartView.setText(myUI.PRESS_TO_START); clickToStartView.startAnimation(myBlinkAnim); } else { // If not, try to install in asynchronous thread progressDialog = new ProgressDialog(this); progressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL); progressDialog.setMessage(myUI.INSTALLING_DB); progressDialog.setCancelable(false); new InstallDBData().execute(“”); } 异步线程的代码是: private class InstallDBData extends AsyncTask { @Override protected Integer doInBackground(String… […]

Button.setBackground(Drawable background)抛出NoSuchMethodError

我正在实现一个简单的方法来以编程方式将Button添加到LinearLayout 。 当我调用setBackground(Drawable background)方法时,抛出以下Error : java.lang.NoSuchMethodError: android.widget.Button.setBackground 我的addNewButton方法: private void addNewButton(Integer id, String name) { Button b = new Button(this); b.setId(id); b.setText(name); b.setTextColor(color.white); b.setBackground(this.getResources().getDrawable(R.drawable.orange_dot)); //llPageIndicator is the Linear Layout. llPageIndicator.addView(b); }