我见过@某些功能的使用,如下所示:
$fileHandle = @fopen($fileName, $writeAttributes);
Run Code Online (Sandbox Code Playgroud)
这个符号有什么用?
在您看来,使用@运算符来抑制PHP中的错误/警告是否有效,而您可能正在处理错误?
如果是这样,你会在什么情况下使用它?
欢迎使用代码示例.
编辑:回复者的注意事项.我不打算关闭错误报告,但是,例如,通常的做法是使用
@fopen($file);
Run Code Online (Sandbox Code Playgroud)
然后检查......但是你可以通过这样做摆脱@
if (file_exists($file))
{
fopen($file);
}
else
{
die('File not found');
}
Run Code Online (Sandbox Code Playgroud)
或类似的.
我想问题是 - 是否有任何@HAS用于抑制错误,不能以任何其他方式处理?
在我的shell脚本中,我得到了这些行:
rm tempfl.txt
rm tempfl2.txt
Run Code Online (Sandbox Code Playgroud)
如果这些不存在,我会收到错误消息:
rm: tempfl2.txt: No such file or directory
rm: tempfl.txt: No such file or directory
Run Code Online (Sandbox Code Playgroud)
有没有办法只抑制这些消息,即使它们并不总是出现,因为文件可能存在?
我试图在视觉和音频上禁用vim上的错误铃声.但是我不能让他们停下来.
我有以下内容vimrc:
" Disable annoying beeping
set noerrorbells
set vb t_vb=
Run Code Online (Sandbox Code Playgroud)
这不起作用,我想一些插件或其他设置正在重置它所以我再次添加它到我的结束 vimrc,仍然没有运气.
我可以让它关闭的唯一方法是set vb t_vb=在所有内容加载后手动调用.我想我可以通过在plugin/after文件夹中添加一个脚本来模拟这个,但我试图避免这种情况,因为这意味着每当我切换到另一台机器时,我必须设置另一件事.
你可以vimrc在这里看到我的全部内容:https://github.com/lerp/dotfiles/blob/master/vimrc
我想使用Cppcheck进行C++代码的静态代码分析.我了解到我可以用--inline-suppr命令抑制某种警告.但是,我无法在评论中找到"suppress_error_id":
// cppcheck-suppress "suppressed_error_id"
Run Code Online (Sandbox Code Playgroud) 这是我的代码,它工作得非常好.
if (ActivityCompat.checkSelfPermission(activity, Manifest.permission.ACCESS_FINE_LOCATION) == PackageManager.PERMISSION_GRANTED || ActivityCompat.checkSelfPermission(activity, Manifest.permission.ACCESS_COARSE_LOCATION) == PackageManager.PERMISSION_GRANTED) {
mMap.setMyLocationEnabled(true);
}
Run Code Online (Sandbox Code Playgroud)
但我不喜欢每次检查都有这么大的代码,并希望将它委托给我的实用程序类中的方法.
if (Utils.hasMapLocationPermissions(getActivity())) {
mMap.setMyLocationEnabled(true);
}
Run Code Online (Sandbox Code Playgroud)
但是setMyLocationEnabled有注释@RequiresPermission因此我不能将它委托给一个方法,因为lint和editor将它显示为一个错误.
是否有一些注释要写在我的实用工具方法上并抑制lint?
像这样的东西
@ChecksPermission
public boolean hasMapLocationPermissions(Activity activity) {
return // my checking logic..
}
Run Code Online (Sandbox Code Playgroud) 在Visual Basic中,我只是On Error Resume Next在我的程序的头部编写,并且在整个项目中错误被抑制.
在C#中我非常想念这个功能.try-catch每个程序的常规处理不仅非常耗时,而且会带来不希望的影响.如果遇到错误,即使已处理,代码也不会从发生的那一刻开始继续.使用On Error Resume Next,代码从错误点继续,仅跳过导致错误的函数调用.
我还没有深入参与C#,但也许C#中存在比原语更好的错误处理try-catch.
我还想要出现错误的模块或函数名称以及错误消息中的行号.Exception据我所知,该课程没有提供这些功能.任何想法(当然,托管,不涉及我自己的应用程序上的任何流程类)?
你如何处理大项目中的错误?我希望我不必try-catch为每个方法添加一个.不知何故,C#抛出了许多错误 - 这似乎是该语言的典型特征.
我发现我的解决方案可以解决我的几个问题:
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
[STAThread]
static void Main()
{
Application.ThreadException += new System.Threading.ThreadExceptionEventHandler(Application_ThreadException); //setup global error handler
Application.Run(new Form1());
}
private static void Application_ThreadException(object sender, System.Threading.ThreadExceptionEventArgs e)
{
MessageBox.Show("Unhandled exception: " + e.Exception.ToString()); //get all error information with line and procedure call
Environment.Exit(e.Exception.GetHashCode()); …Run Code Online (Sandbox Code Playgroud) 我很确定这个问题的答案是否定的,但是如果有一些PHP大师的话
是否有可能以一种方式编写一个函数,其中可以传入无效参数或不存在的变量,并且php不会在不使用 '@'
很像空和isset.您可以传入刚刚编写的变量,也不会出错.
ex:
empty($someBogusVar); // no error
myHappyFunction($someBogusVar); // Php warning / notice
Run Code Online (Sandbox Code Playgroud) 我编写了一个使用Web套接字的Web应用程序.这个想法是我的应用程序在启动时尝试自动连接到最近连接到主机.如果它无法建立与其中任何一个的连接,则它会将用户定向到连接部分并要求他们手动建立连接.
所有这一切都有效.总之,我按顺序尝试每个已知主机,如果200ms后它没有连接(`readyState!= 1),它会尝试下一个.所有这些主机应该在局域网上,所以200ms工作非常可靠.如果列表中的最后一个也失败,那么Web将打开一个模式,指示用户手动键入主机.
问题是,通过尝试自动连接,我必须为我尝试过的主机创建websockets,它会向控制台输出如下所示的错误消息:
与'ws:// lightmate:8080 /'的WebSocket连接失败:连接建立错误:net :: ERR_NAME_NOT_RESOLVED
与'ws:// localhost:8080 /'的WebSocket连接失败:连接建立错误:net :: ERR_CONNECTION_REFUSED
虽然不是任何方式致命的缺陷,但这是不雅观的,妨碍了我的调试.
我试图通过new WebSocket(address)使用try/catch块包围调用来删除它,并且错误仍然通过,我也尝试设置一个onerror处理程序,希望这会抑制错误消息.什么都没有用.
connect: function(){
var fulladdr = completeServerAddress(address);
try {
connection = new WebSocket(fulladdr);
connection.suppressErrorsBecauseOfAutoConnection = suppressErrorsBecauseOfAutoConnection; //Store this module-scoped variable in connection, so if the module changes suppression state, this connection won't.
} catch (e){
//Make sure we don't try to send anything down this dead websocket
connection = false;
return false;
}
connection.binaryType = "arraybuffer";
connection.onerror = function(){
if …Run Code Online (Sandbox Code Playgroud) 从PHP数组中提取可能缺少的值时,使用@是否可以?例:
$value = @$array['possibly_missing_key'];
Run Code Online (Sandbox Code Playgroud)
预期的行为:
if (isset($array['possibly_missing_key'])) {
$value = $array['possibly_missing_key'];
} else {
$value = null;
}
Run Code Online (Sandbox Code Playgroud)
我想知道,在传播使用模式之前.
php ×4
operators ×3
android ×1
annotations ×1
arrays ×1
c# ×1
c++ ×1
coding-style ×1
cppcheck ×1
javascript ×1
lint ×1
shell ×1
vim ×1
websocket ×1