&引用;未处理的异常:Java.lang.exception“;编码
我正在Android Studio中使用Microsoft translator API制作一个翻译应用程序。但是,当我试图将来自Microsoft Translator API的一些翻译文本存储在变量中时,会出现错误“Unhandled exception:Java.lang.exception” 这个错误是什么意思?我如何修复它 我的代码是:&引用;未处理的异常:Java.lang.exception“;编码,java,android,Java,Android,我正在Android Studio中使用Microsoft translator API制作一个翻译应用程序。但是,当我试图将来自Microsoft Translator API的一些翻译文本存储在变量中时,会出现错误“Unhandled exception:Java.lang.exception” 这个错误是什么意思?我如何修复它 我的代码是: public class Text extends AppCompatActivity { Context context; Butt
public class Text extends AppCompatActivity {
Context context;
Button button;
public static String text;
TextView textOutput = (TextView) findViewById(R.id.Result);
EditText textInput = (EditText) findViewById(R.id.TextBar);
public static String allTheTranslatedText;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.text_wall);
Spinner spinner = (Spinner) findViewById(R.id.LanguagePicker);
button = (Button) findViewById(R.id.ConfirmationButton);
context = this;
ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(this,
R.array.language, android.R.layout.simple_spinner_item);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spinner.setAdapter(adapter);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
LayoutInflater li = LayoutInflater.from(context);
View promptsView = li.inflate(R.layout.alertdialog, null);
AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(
context);
alertDialogBuilder.setView(promptsView);
alertDialogBuilder
.setCancelable(false)
.setPositiveButton("OK",
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog,int id) {
Spinner spinner = (Spinner) findViewById(R.id.LanguagePicker);
text = spinner.getSelectedItem().toString();
String r = textInput.getText().toString();
allTheTranslatedText = getTranslatedText(r); // this is the location of error.
}
})
.setNegativeButton("Cancel",
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
dialog.cancel();
}
});
AlertDialog alertDialog = alertDialogBuilder.create();
alertDialog.show();
}
});
}
public String getTranslatedText (String text1) throws Exception{
Translate.setClientId("nnn333");
Translate.setClientSecret("shoppingfor1gbatmymicrosoftdatamarket");
String translatedText = "";
switch (text) {
case "English":
translatedText = Translate.execute(text1, Language.ENGLISH);
case "French":
translatedText = Translate.execute(text1, Language.FRENCH);
case "Spanish":
translatedText = Translate.execute(text1, Language.SPANISH);
case "German":
translatedText = Translate.execute(text1, Language.GERMAN);
case "Italian":
translatedText = Translate.execute(text1, Language.ITALIAN);
case "Russian":
translatedText = Translate.execute(text1, Language.RUSSIAN);
case "Mandarin":
translatedText = Translate.execute(text1, Language.CHINESE_TRADITIONAL);
case "Korean":
translatedText = Translate.execute(text1, Language.KOREAN);
case "Japanese":
translatedText = Translate.execute(text1, Language.JAPANESE);
}
return translatedText;
}
}
公共类文本扩展了AppCompatActivity{
语境;
按钮;
公共静态字符串文本;
TextView textOutput=(TextView)findViewById(R.id.Result);
EditText textInput=(EditText)findViewById(R.id.TextBar);
公共静态字符串所有已翻译文本;
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.text\u墙);
微调器微调器=(微调器)findViewById(R.id.LanguagePicker);
按钮=(按钮)findViewById(R.id.ConfirmationButton);
上下文=这个;
ArrayAdapter=ArrayAdapter.createFromResource(此,
R.array.language、android.R.layout.simple\u spinner\u item);
setDropDownViewResource(android.R.layout.simple\u微调器\u下拉菜单\u项);
旋转器。设置适配器(适配器);
setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
LayoutInflater li=LayoutInflater.from(上下文);
View promptsView=li.inflate(R.layout.alertdialog,null);
AlertDialog.Builder alertDialogBuilder=新建AlertDialog.Builder(
上下文);
alertDialogBuilder.setView(promptsView);
alertDialogBuilder
.setCancelable(错误)
.setPositiveButton(“确定”,
新建DialogInterface.OnClickListener(){
public void onClick(DialogInterface对话框,int-id){
微调器微调器=(微调器)findViewById(R.id.LanguagePicker);
text=spinner.getSelectedItem().toString();
字符串r=textInput.getText().toString();
allTheTranslatedText=getTranslatedText(r);//这是错误的位置。
}
})
.setNegativeButton(“取消”,
新建DialogInterface.OnClickListener(){
public void onClick(DialogInterface对话框,int-id){
dialog.cancel();
}
});
AlertDialog AlertDialog=alertDialogBuilder.create();
alertDialog.show();
}
});
}
公共字符串getTranslatedText(字符串text1)引发异常{
翻译为setClientId(“nnn333”);
setClientSecret(“为1GbatMyMicrosoftDataMarket购物”);
字符串translatedText=“”;
开关(文本){
案例“英语”:
translatedText=Translate.execute(text1,Language.ENGLISH);
“法语”一案:
translatedText=Translate.execute(text1,Language.FRENCH);
“西班牙语”一案:
translatedText=Translate.execute(text1,Language.西班牙语);
“德语”一案:
translatedText=Translate.execute(text1,Language.derman);
“意大利语”一案:
translatedText=Translate.execute(text1,Language.意大利语);
“俄罗斯”案:
translatedText=Translate.execute(text1,Language.俄语);
案例“普通话”:
translatedText=Translate.execute(text1,Language.CHINESE\u TRADITIONAL);
“韩国语”一案:
translatedText=Translate.execute(text1,Language.KOREAN);
“日语”一案:
translatedText=Translate.execute(text1,Language.JAPANESE);
}
返回翻译文本;
}
}
IDE将向您显示此错误消息,以警告您,如果您稍后尝试编译,java编译器将生成相同的错误
该错误意味着您的onClick()
方法正在调用另一个已用抛出异常
声明的方法,而java要求在执行此操作时,必须使用捕获异常的代码,或者反过来用抛出异常
声明调用函数
由于onClick()
是一种覆盖,因此可能不允许向其添加throws Exception
因此,您可以在
onClick()
方法中添加try{…}catch(异常e){…}
,或者声明您的getTranslatedText()
方法,而不声明抛出异常
尝试将代码放入try/catch中
范例
然后在编译器中,我们将看到您的错误,并告诉您发生错误的原因如果您询问编译器错误,请不要尝试发布错误消息的缩写版本,而是在不进行编辑的情况下发布整个消息。它包含的文本非常重要,需要与您的问题一起完全显示。整个错误只是说:“未处理的异常:Java.lang.exception”而不是其他任何内容。当您尝试编译代码时,该消息是来自编译器,还是来自JVM,当您尝试运行代码时?。。。。。。。。。。。。。。。。在哪里?为什么有
getTranslatedText(…)
throw异常?你应该在你的代码中明确异常处理。永远不要做catch(exception e){e.printStackTrace();}
,尤其不要建议新手做这样的事情。为什么不呢?为了调试的目的?因为错误就是这样发生的
try{
yourcodegoeshere..
}
catch(Exception e){
e.printStackTrace();
}