我\xe2\x80\x99m 尝试将 Vue 2.x 应用程序迁移到 Vue 3.x。\n不幸的是,在过去的两天里,我\xe2\x80\x99m 努力寻找这个简单问题的有效解决方案:
\n我的应用程序适用于移动设备,在屏幕顶部有一个顶部栏,左侧和右侧有 2 个上下文按钮。<router-view/>这些按钮触发与 my 中加载并托管的视图相关的方法。
我的 Vue 2 应用程序按照这篇文章的建议运行得非常好:
\n[Vue 2] 应用程序.vue
\n<template>\n <app-bar>\n <bar-btn @click="$refs.routerView[$route.meta.leftBtn.methodName]($route.meta.leftBtn.arguments)">Left btn</bar-btn>\n <div>View title</div>\n <bar-btn @click="$refs.routerView[$route.meta.rightBtn.methodName]($route.meta.rightBtn.arguments)">Right btn</bar-btn>\n </app-bar>\n <main>\n <router-view ref="routerView"/>\n </main>\n</template>\nRun Code Online (Sandbox Code Playgroud)\n方法名称和可选参数存储在我的路线的元数据中:
\n[Vue 2] 路由器.js
\n{\n name: \'View 1\',\n path: \'/\',\n component: MyView1,\n meta: {\n requiresAuth: false,\n leftBtn: { methodName: \'showLeftDialog\', arguments: \'myArgument\' }\n rightBtn: { methodName: \'showRightDialog\', arguments: \'myArgument\' }\n },\n},\nRun Code Online (Sandbox Code Playgroud)\n在 Vue 2 …
我习惯使用SQL数据库,我是Realm的新手,到目前为止,我对这个新移动数据库的易用性印象深刻.但有一些我真的不明白:如何处理错误抛出?
举个简单的例子:
我想在Realm DB中存储一些市场股票.
每个股票都有一个"符号"作为唯一标识符:APPL为Apple Inc,TSLA为特斯拉汽车公司等.
我认为将这些符号声明为主键是有意义的,因为它不可能有多次相同的符号在数据库中
当用户单击符号(在符号列表中)时,此符号将保存在db中.
在这个Raywenderlich教程中,它说:"为了简化本教程中所需的代码,你将使用try!调用引发错误的Realm方法.在你自己的代码中,你应该真的使用try和do/catch抓住错误并妥善处理它们."
所以根据以下模式:
do {
try realm.write {
realm.add(symbol)
}
}
catch let error as NSError {
print("Something went wrong: \(error.localizedDescription)")
}
Run Code Online (Sandbox Code Playgroud)
到目前为止它是有道理的.
如果用户点击数据库中已有的符号,我会(非常逻辑地)得到错误:
*** Terminating app due to uncaught exception 'RLMException', reason: 'Can't set primary key property 'symbol' to existing value 'APPL'.'
Run Code Online (Sandbox Code Playgroud)
问题是在运行时没有捕获到这个错误:我遇到了崩溃.
我的问题不在于如何避免这种崩溃,我当然理解通过在数据库中编写任何东西之前进行简单的测试来避免它很容易:)
我的问题是我们如何在Realm中捕捉潜在的写作错误?
难道我做错了什么?