假设我有一个有437个案例的开关。我已经确定了每一个可能的情况(我认为),并且每个都被处理掉了。 我担心我错过了#438,并希望默认情况下提醒我这件事
我可以trace("ERROR! Stackoverflow has detected your ginormous gaffe and suspended your account indefinitely!");
在那里,但我担心这个错误将在7周后发生,并且跟踪将在我所有其他愚蠢的警告痕迹中丢失。我考虑过让我的默认做到这一点:
trace(myArray[-1]);
肯定会(?)给出错误并停止程序,提醒我隐藏的疏忽,但我想知道是否有更好,更聪明的方法来检测这样的可能错误。<登记/> 任何人? Bueller?
答案 0 :(得分:4)
为什么不抛出错误?
default:
throw new Error("Default reached");
答案 1 :(得分:3)
第一个选项是抛出异常:
throw new Error('Exception!!!')
但是如果你没有调试器flashplayer,你将无法得到任何东西
另一种方法是显示弹出窗口: 如果你在浏览器中使用flashplayer:
ExternalInterface.call("alert", "Exception!!!");
如果您使用Flex Framework:
Alert.show('Exception!!!')
你可以尝试以某种方式高亮显示它:
trace( "==========================================\n" +
"==========================================\n" +
"==========================================\n" +
"===============Exception!!!===============\n" +
"==========================================\n" +
"==========================================\n" +
"==========================================\n" +);
最后一个选项是自定义弹出窗口:
import flash.text.TextField;
import flash.text.TextFieldAutoSize;
const theStage:Stage = MovieClip(root).stage;
const tf:TextField = new TextField();
tf.text = "Exception!!!";
tf.autoSize = TextFieldAutoSize.LEFT;
tf.x = theStage.stageWidth - tf.width >> 1;
tf.y = theStage.stageHeight - tf.height >> 1;
tf.border = true;
tf.addEventListener(MouseEvent.CLICK, function(e:MouseEvent){
e.currentTarget.parent.removeChild(e.currentTarget);
})
theStage.addChild(tf);
import flash.text.TextField;
import flash.text.TextFieldAutoSize;
const theStage:Stage = MovieClip(root).stage;
const tf:TextField = new TextField();
tf.text = "Exception!!!";
tf.autoSize = TextFieldAutoSize.LEFT;
tf.x = theStage.stageWidth - tf.width >> 1;
tf.y = theStage.stageHeight - tf.height >> 1;
tf.border = true;
tf.addEventListener(MouseEvent.CLICK, function(e:MouseEvent){
e.currentTarget.parent.removeChild(e.currentTarget);
})
theStage.addChild(tf);