我有时会遇到需要捕获异常的情况,如果它被抛出但从不对它做任何事情.换句话说,可能会发生异常,但如果发生异常则无关紧要.
我最近阅读了这篇关于类似内容的文章:http://c2.com/cgi/wiki?EmptyCatchClause
这个人谈论的评论如何
// should never occur
Run Code Online (Sandbox Code Playgroud)
是代码气味,不应该出现在代码中.然后他们去解释评论如何
// don't care if it happens
Run Code Online (Sandbox Code Playgroud)
完全不同,我自己遇到这样的情况.例如,在发送电子邮件时,我会执行与此类似的操作:
var addressCollection = new MailAddressCollection();
foreach (string address in addresses)
{
try
{
addressCollection.Add(address);
}
catch (Exception)
{
// Do nothing - if an invalid email occurs continue and try to add the rest
}
}
Run Code Online (Sandbox Code Playgroud)
现在,您可能认为这样做是个坏主意,因为您希望返回给用户并解释无法将一条或多条消息发送给收件人.但是,如果它只是一个CC地址怎么办?这不太重要,即使其中一个地址无效(可能只是一个错字),您仍然可能仍然希望发送消息.
所以我使用空挡块是对的还是有一个我不知道的更好的替代方案?
我有2个连接字符串 - 1个本地,1个用于我的主要生产服务器.当我安装它时,实体框架将App = EntityFramework添加到我的本地字符串(4.1) - 我现在在4.3上.这是做什么的 - 我找不到任何参考?
这是我的本地连接字符串:
<add name="LocalConnection"
providerName="System.Data.EntityClient"
connectionString="metadata=
res://*/;
provider=System.Data.SqlClient;
provider connection string='
Data Source=.\SQLEXPRESS;
AttachDBFilename=C:\mypath\MyDb.mdf;
Integrated Security=True;
User Instance=True;
MultipleActiveResultSets=True;
App=EntityFramework'" />
Run Code Online (Sandbox Code Playgroud)
只是好奇!
我想从数据库中获取第一行第一个单元格值,它可以很好地使用下面的代码.但是当没有找到结果时,它会抛出异常.
如何处理DBNull
.
我应该更改我的查询吗?如果他们没有记录,哪些值会返回?
System.NullReferenceException:未将对象引用设置为对象的实例.
码:
public string absentDayNo(DateTime sdate, DateTime edate, string idemp)
{
string result="0";
string myQuery="select COUNT(idemp_atd) absentDayNo from td_atd where ";
myQuery +=" absentdate_atd between '"+sdate+"' and '"+edate+" ";
myQuery +=" and idemp_atd='"+idemp+"' group by idemp_atd ";
SqlCommand cmd = new SqlCommand(myQuery, conn);
conn.Open();
//System.NullReferenceException occurs when their is no data/result
string getValue = cmd.ExecuteScalar().ToString();
if (getValue != null)
{
result = getValue.ToString();
}
conn.Close();
return result;
}
Run Code Online (Sandbox Code Playgroud) 我对c#有点新,我在这一点上卡住了,我有一个常规的字符串,我用它\
来逃避"
,逃到这里意味着逃避编译器的解释"
,并"
在屏幕上打印,而我得到预期的输出 - >
class Program
{
static void Main(string[] args)
{
string s1 = "This is a \"regular\" string";
System.Console.WriteLine(s1);
System.Console.Read();
}
}
Run Code Online (Sandbox Code Playgroud)
现在,我有一个逐字字符串,我试图以与上面相同的方式逃避"
使用\
..-->
class Program
{
static void Main(string[] args)
{
string s2 = @"This is \t a \"verbatim\" string";//this would escape \t
System.Console.WriteLine(s2);
System.Console.Read();
}
}
Run Code Online (Sandbox Code Playgroud)
为什么以上不起作用?
下面有两个if语句,它们使用逻辑运算符有多个条件.逻辑上两者都相同,但检查顺序不同.第一个工作,第二个工作失败.
我引用了MSDN来检查是否定义了执行条件的顺序; 但我找不到.
考虑具有&&
逻辑运算符的多重检查条件.是否保证始终检查第一个条件,如果不满足,则不会检查第二个条件?
我曾经使用方法1,它运作良好.寻找证明使用的MSDN参考.
UPDATE
参考"短路"评估
码
List<string> employees = null;
if (employees != null && employees.Count > 0)
{
string theEmployee = employees[0];
}
if (employees.Count > 0 && employees != null)
{
string theEmployee = employees[0];
}
Run Code Online (Sandbox Code Playgroud) 我试图在phpMyAdmin中向现有表添加多个列,但我一直收到同样的错误:
#1064 - 您的SQL语法有错误; 查看与MySQL服务器版本对应的手册,以获得正确的语法...
我在写信:
ALTER TABLE `WeatherCenter`
ADD COLUMN
BarometricPressure SMALLINT NOT NULL,
CloudType VARCHAR(70) NOT NULL,
WhenLikelyToRain VARCHAR(30) NOT NULL;
Run Code Online (Sandbox Code Playgroud)
我已经在StackOverflow上提到了过去的帖子,我遵循专家的建议,为什么我会收到错误?
我有很多带外键的表,有些有索引,有些则没有.所有外键都使用名为FK_<name of the foreign key>
的索引命名IX_<name of the foreign key>
.
考虑到外键的列基数,创建(或不创建)索引是否有一些好的做法?这可以作为T-SQL命令编写脚本吗?
我有一个T1
包含三列的表:Id, Name, Address
还有另一个表T2
包含2列Id, New_Address
.Id
列与... T2
相同T1
.
我需要一个查询将更新Address
的列T1
具有New_Address
的T2
.
我可以通过检查ID并执行update语句来完成循环.怎么能用查询完成?
我在SQL Server 2008数据库中有一个名为的表Meter
.该表有一个名为的列Name
.
列Name
中的每个条目都具有以下前缀ZAA\
.我想将此前缀更改为ZAA_
不影响列中其余文本.
我有两个类几乎相同,除了存储在它们中的数据类型.一个类包含所有double值,而other包含所有float值.
class DoubleClass
{
double X;
double Y;
double Z;
}
class FloatClass
{
float X;
float Y;
float Z;
}
Run Code Online (Sandbox Code Playgroud)
现在我有一个DoubleClass,我想转换为FloatClass.
var doubleObject = new DoubleClass();
var convertedObject = (FloatClass)doubleObject; // TODO: This
Run Code Online (Sandbox Code Playgroud)
一种简单的方法是创建一个创建新FloatClass对象的方法,填充所有值并返回它.有没有其他有效的方法来做到这一点.