• 0755-82538016
  • 0755-82560826
  • 深圳网站建设_APP小程序开发_博纳网络

    • 网站建设案例
      • ";

        营销网站建设

        全网营销网站

        高端网站建设

        商城网站建设

        外贸网站建设

        小程序开发

        区块链开发

        物联网项目开发

        定制app开发

        在线教育网站

        速成网站建设

        服装网站建设

        餐饮网站建设

        珠宝首饰网站

        机械制造网站

        文化旅游网站

        家装建材网站

        美容化妆品网站

        数码产品网站

        模板案例库

        联系电话:0755-82560826 82538016 82560635邮箱:qin@198bona.com地址:深圳市福田区皇岗路5007神采苑402栋610
    • 网站推广
      • ";

        网站优化基础

        建站优化

        网站优化

        营销推广

        整站优化

        推广帮助

        谷歌搜索

        推广方案

        推广套餐

        推广技巧

        百度排名

        巧用微博推广

        直播视频网站推广法

        微信推广网站方法

        网站外链推广

        公共微信号推广

        网站优化闲谈

        常见问题

        公司资讯

        联系电话:0755-82560826 82538016 82560635邮箱:qin@198bona.com地址:深圳市福田区皇岗路5007神采苑402栋610
    • 网站制作资讯
      • ";

        网站制作

        外贸网站建设

        网站设计

        网站代运营

        深圳网站建设专栏

        深圳小程序开发

        网站改版

        APP开发

        网站建设方案

        安全维护

        软件开发

        平台搭建

        建站行业资讯

        域名注册

        虚拟主机

        企业邮局

        国外主机

        VPS独享空间

        免备案香港服务器

        如何解析域名

        联系电话:0755-82560826 82538016 82560635邮箱:qin@198bona.com地址:深圳市福田区皇岗路5007神采苑402栋610
    • 网站报价
      • ";

        网站报价

        建站方案

        联系电话:0755-82560826 82538016 82560635邮箱:qin@198bona.com地址:深圳市福田区皇岗路5007神采苑402栋610
    • 公司动态
      • ";
        联系电话:0755-82560826 82538016 82560635邮箱:qin@198bona.com地址:深圳市福田区皇岗路5007神采苑402栋610
    • 关注博纳
      • ";

        网站制作精英团队

        网站建设公司愿景

        公司介绍

        主营业务

        博纳文化

        加入博纳

        联系电话:0755-82560826 82538016 82560635邮箱:qin@198bona.com地址:深圳市福田区皇岗路5007神采苑402栋610
    • 联系我们
      • ";

        网站建设公司联系方式

        网站建设、网站制作公司乘车路线

        联系电话:0755-82560826 82538016 82560635邮箱:qin@198bona.com地址:深圳市福田区皇岗路5007神采苑402栋610
      网站制作资讯

      当前位置:

        主页网站制作资讯APP开发APP开发怎样解决使用try…catch…处理异常?

      APP开发怎样解决使用try…catch…处理异常?

      发布时间:2019-04-23

      文章编辑:网站建设 文章来源:APP开发 浏览量:次

       APP开发怎样解决使用try…catch…处理异常?我们在项目在开发过程中,可以预判有些地方难免会出现异常,如服务器端可能会出错,传递给APP端的数据类型不对或数据为空,导致APP端解析从服务器获取的数据时出现异常;还有就是在申请内存的时候,由于内存不足等原因出现异常。深圳APP开发公司提醒对于上述这些情况,就可通过try…catch…机制处理,代码如下:try {       T model = gson. fromJson( jsonString, type); } catch (Exception e) {     Snackbar. make( mView, "数据 解析 出错",     Snackbar. LENGTH_ LONG). show();     return;
      } try {       long[] mArray = new long[ 1024x1024]; } catch (Exception e) {     Snackbar. make( mView, "内存 不足", Snackbar. LENGTH_ LONG). show();     return; }
      APP开发公司详解使用UncaughtExceptionHandler处理异常 
        在使用APP的过程中,任何时候都可能遇到异常,能够预判到的异常只是极少数,对于不能预判到的异常,可以统一利用UncaughtExceptionHandler接口类处理。如果子线程中出现异常,在主线程代码中使用try…catch…是无法捕获到异常的,必须使用UncaughtExceptionHandler来进行处理。在实现UncaughtExceptionHandler接口类的函数时,必须重载uncaughtException(Threadthread,Throwableex)函数。如下代码利用UncaughtExceptionHandler接口类处理异常,并保存异常日志到本机。
      public class rwUncaughtExceptionHandler implements Thread. UncaughtExceptionHandler {     private Thread. UncaughtExceptionHandler mDefaultHandler;     public static final String TAG = "rwUncaught";     private static rwUncaughtExceptionHandler INSTANCE = new rwUncaughtExceptionHandler();     private Context mContext; // 用来 存储 设备 信息 和 异常 信息     private Map< String, String> info = new HashMap< String, String>();     private SimpleDateFormat format = new SimpleDateFormat(" yyyy- MM- dd- HH- mm- ss");     private rwUncaughtExceptionHandler() {    } // 获取 rwUncaughtExceptionHandler 实例     public static rwUncaughtExceptionHandler getInstance() {         return INSTANCE;    }     public void init( Context context){         mContext = context;        // 获取 系统 默认 的 UncaughtException 处理 句柄         mDefaultHandler = Thread. getDefaultUncaughtExceptionHandler();        // 设置 该 rwUncaughtExceptionHandler 为 APP 的 默认 处理 句柄         Thread. setDefaultUncaughtExceptionHandler( this);    }    @ Override     public void uncaughtException( Thread thread, Throwable ex) {         if (!handleException( ex) && mDefaultHandler != null) {            // 如果 用户 没有 处理 则 调用 系统 默认 的 异常 处理 句柄 来 处理             mDefaultHandler. uncaughtException( thread, ex);        } else {             try {                 Thread. sleep( 2000);
       } catch (InterruptedException e) {                 Log. e( TAG, "error : ", e);            }             Intent intent = new Intent( mContext. getApplicationContext(), ViewPagerDemo. class);             PendingIntent restartIntent = PendingIntent. getActivity (mContext. getApplicationContext(), 0,                     intent. addFlags( Intent. FLAG_ ACTIVITY_ NEW_ TASK),                     0);             AlarmManager mgr = (AlarmManager) mContext. getSystemService (Context. ALARM_ SERVICE);             mgr. set( AlarmManager. RTC, System. currentTimeMillis() + 1000,                    // 1 秒钟 后 重 启 应用                     restartIntent);     //关闭 所有 的 Activity             exceptionHandlerApplication. finishActivity();        }    }    /**     * 自定义 异常 处理、 收集 异常 信息 和 保存 数据 到 本机     *     * @param ex
      * @return true: 如果 处理 了 该 异常 信息 返回 true; 否则 返回 false.     */     private boolean handleException( Throwable ex) {         if (ex == null) {             return false;        }        // 使用 Toast 来 显示 异常 信息         new Thread() {            @ Override             public void run() {                 Looper. prepare();                 Toast. makeText( mContext, "很 抱歉, 程序 出现 异常, 即将 退出 并重 启。",                         Toast. LENGTH_ SHORT). show();                 Looper. loop();            }        }. start();        // 收集 设备 参数 信息         collectDeviceInfo( mContext);        // 保存 日志 文件         saveCrashInfo( ex);         return true;    }
       /**     * 收集 APP 版本 信息 和 设备 参数 信息     *     * @param context     */     public void collectDeviceInfo( Context context) {         try {             PackageManager pm = context. getPackageManager();             PackageInfo pi = pm. getPackageInfo( context. getPackageName(),                     PackageManager. GET_ ACTIVITIES);             if (pi != null) {                 String versionName = pi. versionName == null ? "null"                        : pi. versionName;                 String versionCode = pi. versionCode + "";                 info. put(" versionName", versionName);                 info. put(" versionCode", versionCode);                 info. put(" 手机 型号:", android. os. Build. MODEL);                 info. put(" 系统 版本", ""+android. os. Build. VERSION. SDK);                 info. put(" Android 版本", android. os. Build. VERSION. RELEASE);            }        } catch (PackageManager. NameNotFoundException e) {             e. printStackTrace();        }
        Field[] fields = Build. class. getDeclaredFields();         for (Field field : fields) {             try {                 field. setAccessible( true);                 info. put( field. getName(), field. get(""). toString());                 Log. d( TAG, field. getName() + ":" + field. get(""));            } catch (IllegalArgumentException e) {                 e. printStackTrace();            } catch (IllegalAccessException e) {                 e. printStackTrace();            }        }    }     private String saveCrashInfo( Throwable ex) {         StringBuffer sb = new StringBuffer();         for (Map. Entry< String, String> entry : info. entrySet()) {             String key = entry. getKey();             String value = entry. getValue();             sb. append( key + "=" + value + "\r\ n");        }         Writer writer = new StringWriter();         PrintWriter pw = new PrintWriter( writer);         ex. printStackTrace( pw);
        Throwable cause = ex. getCause();         while (cause != null) {             cause. printStackTrace( pw);             cause = cause. getCause();        }         pw. close();         String result = writer. toString();         sb. append( result);        // 把 数据 保存 到 文件 里         long timetamp = System. currentTimeMillis();         String time = format. format( new Date());         String fileName = "crash_" + time + "_"+ ".log";         if (Environment. getExternalStorageState(). equals(                 Environment. MEDIA_ MOUNTED)) {             try {                 File dir = new File( Environment. getExternalStorageDirectory(). getAbsolutePath() + File. separator + "crash");                 Log. i(" CrashHandler", dir. toString());                 if (!dir. exists())                     dir. mkdir();                 FileOutputStream fos = new FileOutputStream( new File( dir,                         fileName));
          fos. write( sb. toString(). getBytes());                 fos. close();                 return fileName;            } catch (FileNotFoundException e) {                 e. printStackTrace();            } catch (IOException e) {                 e. printStackTrace();            }        }         return null;    } }
      好了,APP开发公司本文关于“APP开发怎样解决使用try…catch…处理异常?”的处理方法与流程本文就分享到这里,谢谢关注,博纳网络编辑整理。
       

      当前文章链接:/construction/appkaifa/2614.html
      上一篇:开发APP项目怎样解决动态Vector兼容性问题? 下一篇:安卓APP项目开发怎样解决ANR异常的处理?
      返回列表
      如果您觉得案例还不错请帮忙分享:

      [声明]本网转载网络媒体稿件是为了传播更多的信息,此类稿件不代表本网观点,本网不承担此类稿件侵权行为的连带责任。故此,如果您发现本网站的内容侵犯了您的版权,请您的相关内容发至此邮箱【qin@198bona.com 】,我们在确认后,会立即删除,保证您的版权。

      相关案例推荐

      • 昊意建材

        昊意建材

        企业网站

        昊意建材

      • 老板电器商城网站建设案例

        老板电器商城网站建设案例

        商城门户

        老板电器商城网站建设案例

      • 萛记

        萛记

        商城门户

        萛记

      资讯分类

      • 网站制作
      • 外贸网站建设
      • 网站设计
      • 网站代运营
      • 深圳网站建设专栏
      • 深圳小程序开发
      • 网站改版
      • APP开发
      • 网站建设方案
      • 安全维护
      • 软件开发
      • 平台搭建
      • 建站行业资讯
      • 域名注册
      • 虚拟主机
      • 企业邮局
      • 国外主机
      • VPS独享空间
      • 免备案香港服务器
      • 如何解析域名

      最新发布

      • 社区APP开发上线后影响用户使用的粘性有哪些?
      • 为什么说大健产业O2OAPP开发潜力无限
      • 网络公司对社区O2OAPP开发基本认识
      • 工业4.0时代怎样做好一个APP的开发工作?
      • APP开发公司分析APP应用开发下一个巨头在哪些领域?
      • APP电子商务平台开发前景如何?
      • 社交类型APP开发需要具备的五个必要条件
      • 社交类型APP平台开发使用小程序还是APP模式好?
      • 使用HTML语言开发APP商城可以吗?
      • 社区O2OAPP开发的方向选择

      相关资讯

      • APP网站制作流程以及栏目分布
      • 企业网站优化人员面对搜索引擎的困惑
      • 企业门户网站如何做好针对搜索引擎的优化工作
      • APP/PC购物商城网站如何做好产品图片的优化技巧
      • 网站软文内容以及网站外链存在的几种形式对网站有多大影响
      • 如何做好网站软文标题的描述更适合搜索引擎的需要?
      • 网站建设好后期出现被搜索引擎降权的几个主要因素
      • 小程序开发制作前途取决于市场,别被您的同行抢了先机
      • APP开发公司提醒您关注:电商平台要求商家“二选一”引多方不满 专家提建议
      • APP为什么会在我们的手机界面上变成僵尸图标?

      热门搜索

      • 网站免费制作
      • 企业网站制作
      • 网站建设方案
      • 网站开发公司
      • 网站设计
      • 深圳网站建设
      • 代运营网站
      • 移动网站建设
      • 设计公司
      • 小程序开发

      Copyright © 2021 博纳网络 版权所有  粤ICP备17054727号

      • 🏠

        首页

      • 💬

        咨询

      • 📞

        通话

      • 📂

        案例

      • ⬆

        返回