在C#中,'Catch','Catch(Exception)'和'Catch(Exception e)'之间有什么区别?
关于try-catch的MSDN文章在其示例中使用了其中的两篇,但没有解释使用目的的差异.
try
{}
catch
{}
try
{}
catch (Exception)
{}
try
{}
catch(Exception e)
{}
Run Code Online (Sandbox Code Playgroud)
这些有何不同?哪些会捕获所有异常,哪些异常捕获?
我在线阅读本教程. http://www.tutorialspoint.com/spring/spring_bean_life_cycle.htm
但是当我到达这一行时,我在使用Eclipse时遇到了错误:context.registerShutdownHook();
Eclipse说:
"此行的多个标记 - 语法错误,插入"AssignmentOperator Expression"以完成赋值 - 语法错误,插入";"以完成语句 - 方法registerShutdownHook()未定义类型ApplicationContext"
我完全按照本教程.我的所有变量名都完全相同.我的代码与他完全相同.我不确定是什么问题.
我做错了什么,可以做些什么来解决这个问题,以便我可以继续教程.
package com.tutorialspoint;
import org.springframework.context.support.AbstractApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class MainApp
{
public static void main(String[] args)
{
AbstractApplicationContext context = new ClassPathXmlApplicationContext("Beans.xml");
HelloWorld obj = (HelloWorld)context.getBean("helloWorld");
obj.getMessage();
context.registerShutdownHook();
}
}
Run Code Online (Sandbox Code Playgroud) 现在我做了一些研究.我需要将我从ajax调用中检索到的一些数据存储到我的页面上的WebMethod中,然后我可以随时将其重新拉回来.
我一开始认为ViewState是最好的选择.遗憾的是,您无法以非静态方法的方式引用它.即使我将页面的实例存储在ViewState中,我相信它会在方法结束时解除实例化,从而破坏我保存的任何数据.
我需要这些数据用于我在其他WebMethods中进行的数据库调用.
我的aspx页面的C#代码隐藏的基本方法如下所示:
[WebMethod]
[ScriptMethod]
public static string populateModels(string[] makeIds)
{
}
Run Code Online (Sandbox Code Playgroud)
因此,例如,我需要保存所选的品牌以便从未来的数据库调用中获取.由于我的大多数盒子都是从数据库中过滤和提取的.
此代码适用于在静态WebMethods中的SessionState中检索和存储数据.
[WebMethod(EnableSession = true)]
[ScriptMethod]
public static string populateYears(string[] modelIds)
{
HttpContext.Current.Session["SelectedModels"] = modelIds;
string[] makeids = (string[])HttpContext.Current.Session["SelectedMakes"];
}
Run Code Online (Sandbox Code Playgroud) 所以我用F#在winforms中做了一个简单的个人项目.我的代码曾经工作过,但现在抛出这个异常似乎没有理由.
An unhandled exception of type 'System.InvalidOperationException' occurred in FSharp.Core.dll
Additional information: The initialization of an object or value resulted in an object or value being accessed recursively before it was fully initialized.
Run Code Online (Sandbox Code Playgroud)
代码是从表单本身的构造函数调用的成员方法
do
//lots of other constructor code before this point
// render the form
form.ResumeLayout(false)
form.PerformLayout()
form.ReloadGoals
//several other members before here
member form.ReloadGoals =
let x = 10 //crashes on this line
Run Code Online (Sandbox Code Playgroud)
我抓住我正在使用的项目的模板的网站就是这个.不幸的是,我已经为此做了一些实质性的补充.
我很乐意发布更多代码,但我需要知道哪些代码完全相关,因为我不完全确定并且不想在无关代码中陷入困境.
另外,我无法在System.InvalidOperationException上找到很多文档.每次我找到它,它被用作一个例子例外的,你可以扔在你自己的,不是什么原因造成的.
我正在尝试向我的控制器发出 HTTP 请求并发回可为空的 DateTime。当填充字段时,此请求成功,当字段 (CloseDate) 为 null 时,我收到一个 HTTP 响应,指出 null 无效(对于 Close Date)。
在我的控制器中,我有一个如下所示的 post 方法:
[HttpPost]
[Authorize]
[Route("properties/{propertyId}")]
public async Task<IActionResult> BasicPropertyUpdate([FromForm] PropertyViewModel request)
{
}
Run Code Online (Sandbox Code Playgroud)
由于我收到 HTTP 400 响应,因此我不会遇到任何断点。
在我的 ViewModel 中,我有一个如下所示的合同:
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.Linq;
using System.Threading.Tasks;
namespace ViewModels
{
public class PropertyViewModel
{
//other stuff
public DateTime? CloseDate { get; set; }
}
}
Run Code Online (Sandbox Code Playgroud)
原始 HTTP 响应(由 Fiddler 捕获)如下所示:
HTTP/1.1 400 Bad Request
Date: Tue, 10 Dec 2019 22:07:01 GMT
Content-Type: …
Run Code Online (Sandbox Code Playgroud) 所以在F#中,函数被认为是一等公民,因为它是一种函数式编程语言,可以被引用.
所以我可以做得很好
let double x = x * 2
let times2 = double
Run Code Online (Sandbox Code Playgroud)
现在times2是double的别名,并且具有相同的函数签名int - > int
为什么我不能这样做来为.NET函数添加别名?
let write = System.IO.File.WriteAllLines
Run Code Online (Sandbox Code Playgroud)
如果我尝试这样做,它认为我错过了一个参数,但实际上我并没有尝试调用该函数,我试图别名它.
The member or object constructor 'WriteAllLines' does not take 1 argument(s). An overload was found taking 2 arguments.
Run Code Online (Sandbox Code Playgroud)
有没有办法为预定义的.NET函数添加别名,或者它不可能?
这让我疯了.我在这里看微软的功能示例.我看不出我做错了什么.
所以,我正在尝试使用F#和WPF,我找到了一个有效的在线项目模板. 在这里.我即将开始.遗憾的是,设计人员无法通过双击C#中的元素来生成F#代码中的事件.但是哦,我可以设置Click的功能.我决定手动完成所有操作.
这是我有缺陷的尝试:
module MainApp
open System
open System.Windows
open System.Windows.Controls
open FSharpx
let mutable doc = ""
type MainWindow = XAML<"MainWindow.xaml">
let loadWindow() =
let window = MainWindow()
// Your awesome code code here and you have strongly typed access to the XAML via "window"
window.Root
let make (sender:Object, e:RoutedEventArgs) =
doc<- doc +"<?xml version=\"1.0\" standalone=\"no\"?>"
0
[<STAThread>]
(new Application()).Run(loadWindow()) |> ignore
Run Code Online (Sandbox Code Playgroud)
无论如何,它不喜欢让它上线的线.它给了我这个错误:
Block following this 'let' is unfinished. Expect an expression
Run Code Online (Sandbox Code Playgroud)
然而,显然我在MSDN上阅读
The compiler …
Run Code Online (Sandbox Code Playgroud) 现在还没有任何关于红色的书,因为它太新了。因此,我正在尝试遵循一本旧的 Rebol 书,并从中挽救我能得到的东西。
我发现一些命令由于read
文件编码而无法执行代码。
save %/c/users/abagget/desktop/bay.jpg read http://rebol.com/view/bay.jpg
Access Error: invalid UTF-8 encoding: #{FFD8FFE0}
Run Code Online (Sandbox Code Playgroud)
在 Rebol 中,this^ 会是读/二进制和写/二进制
>> write %/c/alex.txt read http://google.com
*** Access Error: invalid UTF-8 encoding: #{A050726F}
Run Code Online (Sandbox Code Playgroud)
有没有办法将传入内容转换为 UTF-8,以便我可以进行读取?或者是否有其他类型的读取可以处理非 UTF-8?
所以我在Try F#上有这2个文件.唯一的区别(我可以看到)是变量名称.它们都是3行代码.它们现在托管在Try F#上
http://www.tryfsharp.org/create/zadkielmodeler/file1.fsx
http://www.tryfsharp.org/create/zadkielmodeler/file2.fsx
文件1工作,文件2不工作.
我正在努力将我的大脑包裹起来.我在个人项目的代码中尝试了类似的情况.
let x1Points = [0..2..100]
|> List.map (fun x-> x * x)
Run Code Online (Sandbox Code Playgroud)
这会在我的测试文件中产生相同的错误(file2)在第一行
"Incomplete Value or function definition."
Run Code Online (Sandbox Code Playgroud)
在第二行代码中它说:
Unexpected infix operator in binding
Run Code Online (Sandbox Code Playgroud)
老实说,我不知道这意味着什么.无论如何,如果我能理解为什么它会在测试文件中给我这个错误,我可以更好地理解我的真实项目.所以请帮助我理解为什么我在file2中收到此错误,但不是file1.
我正在尝试构建一个简单的confluence宏,它呈现当前父级的所有子页面.基本上是现有宏之间的交叉:子显示和包含页面.我确实看了一下这些宏的源代码,但由于这是我第一次在汇合中进行开发,所以它更令人困惑而不是有用.
现在我正在研究执行方法,因为我是汇合开发的新手,所以我不确定100%究竟需要去那里.
我已经阅读了Atlassian的制作新的Confluence宏指南, 但似乎他们只是使用html来包装现有宏的属性列表.
所以我决定查看API,特别是Page 我能够非常接近,问题是,当我复制页面的主体时,我没有得到他们页面中的孩子的宏和样式.
@Override
public String execute(Map<String, String> parameters, String body,
ConversionContext context) throws MacroExecutionException {
//loop through each child page and get its content
StringBuilder sb = new StringBuilder();
ContentEntityObject ceo = context.getPageContext().getEntity();
Page parent =(Page) ceo ;
List<Page> children = parent.getChildren();
for(Page child:children)
{
sb.append(child.getBodyAsString());
}
return sb.toString();
}
Run Code Online (Sandbox Code Playgroud)
我如何获得所有这些不仅仅是文本?
我也用java标记这个,因为这是插件的编写内容.
我对函数式编程有点新意,虽然我对F#有点熟悉,但我仍然在学习所有奇怪的工作方式.
//I love my Rice and Curry'd functions
let add x =
let subFunction y =
x + y
subFunction
//explicit parameter
let add1 y = add 1 y
//implicit parameter
let add10 = add 10
//calling it with the parameter it doesn't show that it takes
let twenty = add10 10
Run Code Online (Sandbox Code Playgroud)
所以这里add10有隐式参数,因为它调用的函数返回一个带参数的函数.为什么我接受我可以这样声明它而不是我声明add1的方式?
从它的声明判断它真的具有欺骗性,人们会假设它只是一个int.
所以我有这个 .scss 文件,它可以正确获取基本样式,但无法获取 sudo 类的样式:hover。
这是主页.scss
.link {
text-decoration: underline;
color : rgb(39,82,180);
cursor: pointer;
& :hover {
color :"#002447";
}
}
Run Code Online (Sandbox Code Playgroud)
这是 homepage.component.html 中的相关代码
<li><button class="link" role="link" (click)="dostuff()">Remote Support</button></li>
Run Code Online (Sandbox Code Playgroud)
颜色显示正确,光标也正确显示,并且文本按预期带有下划线。但是,悬停期间颜色不会改变。
如何使鼠标悬停时文本颜色发生变化?强烈推荐 sass 解决方案而不是 js/Angular 解决方案。
我也尝试过更传统的 CSS 方法,但也不起作用。
.link {
text-decoration: underline;
color : rgb(39,82,180);
cursor: pointer;
}
.link :hover {
color :"#002447";
}
Run Code Online (Sandbox Code Playgroud)
我还尝试删除 :hover 和 & 之间的空格,我也尝试删除 CSS 版本中的相同空格。
在我的 package-lock.json 中,我有这些特定版本的 SASS。
“萨斯”:“1.23.3”,
“sass-loader”:“8.0.0”,
我还使用foundaton.css和font-awesome以防出现任何已知的冲突。
好吧,我在jsfiddle中有非常简单的东西.我正在尝试确保在我必须在C#中动态生成jquery之前,我可以在jquery中正确执行它.基本上,jQuery假设基于数组中的值填充html.
你可以在这里查看小提琴http://jsfiddle.net/KwVty/
这就是我到目前为止所拥有的.但它不起作用.
var makes = new array();
makes[0] = 'HOONDA';
makes[1] = 'MEETSUBITCHE';
makes[2]= 'NEWSMOBILE';
makes[3]= 'FJORD';
for(var i=0; i<makes.length; i++)
{
$('#2').append('<option value=1>'+makes[i]+'</option>');
}
Run Code Online (Sandbox Code Playgroud)
在HTML中:
<select id="2" multiple="multiple">
<option> 10</option>
</select>
Run Code Online (Sandbox Code Playgroud)